首页 > 解决方案 > Python:是否有一个循环函数来总结这一点?

问题描述

我正在我的数据框中创建一个名为第 3 列的新列。此列需要从 0 开始,然后第 3 列应该 = 第 2 列 + 第 3 列的先前结果(上方)。对于 x=,代码需要如下所示1 到 x=1000,但总结如下:

df.at[0,'column3']=0
x=1
df.at[x,'column3']=df.at[x,'column2'] + df.at[x-1,'column3']
x=2
df.at[x,'column3']=df.at[x,'column2'] + df.at[x-1,'column3']
x=3
df.at[x,'column3']=df.at[x,'column2'] + df.at[x-1,'column3']
........
x=1000
df.at[x,'column3']=df.at[x,'column2'] + df.at[x-1,'column3']

当我单独输入上述内容时,它可以工作,但是当我尝试这个时:

for x in range(1,1000):
df.at[x,'column3']=df.at[x,'column2'] + df.at[x-1,'column3']

它给了我错误'只能将str(不是“numpy.int64”)连接到str'。数据框中的所有值都是数字 (0-10),并且没有 NaN 值。

标签: pythondataframefor-loopconcatenation

解决方案


import pandas as pd
df = pd.DataFrame({'column2' : list(range(1, 1001))})
df['column3'] = df['column2']
df.loc[0, 'column3'] = 0
df['column3'] = df['column3'].rolling(2, min_periods=1).sum()
df

找这个?


推荐阅读