我的数据框当前如下所示:
ts1 ts2
0 0 NaN
1 3 NaN
2 2 NaN
3 5 NaN
....依此类推,直到第1000行
我需要使用x = 1到x = 1000的以下代码填充ts2列。有人可以告诉我如何通过使用for循环来简化此操作吗?
df.at[0,'ts2']=0 #start ts2 row 0 at 0
x = 1
df.at[x,'ts2']=df.at[x,'ts1'] + df.at[x-1,'ts2']
x = 2
df.at[x,'ts2']=df.at[x,'ts1'] + df.at[x-1,'ts2']
x = 3
df.at[x,'ts2']=df.at[x,'ts1'] + df.at[x-1,'ts2']
x = 4
df.at[x,'ts2']=df.at[x,'ts1'] + df.at[x-1,'ts2']
#.....
#x = 1000
#df.at[x,'ts2']=df.at[x,'ts1'] + df.at[x-1,'ts2']
df
我尝试将所有NaN替换为0,并且还使用以下代码,但没有运气:
for x in range(1,1000):
df.at[x,'ts2']=df.at[x,'ts1'] + df.at[x-1,'ts2']
我希望最终结果看起来像这样:
ts1 ts2
0 0 0
1 3 3 #3+0
2 2 5 #2+3
3 5 10 #5+5
答案 0 :(得分:1)
df = pd.DataFrame({"ts1":[0, 3, 2, 5]})
df['ts2'] = df.ts1.cumsum()