我需要找到一种简洁的方法来用以下代码填充数据框:
x = 1
df.at[x,'col2']=df.at[x,'col1'] + df.at[x-1,'col2']
x = 2
df.at[x,'col2']=df.at[x,'col1'] + df.at[x-1,'col2']
x = 3
df.at[x,'col2']=df.at[x,'col1'] + df.at[x-1,'col2']
x = 4
df.at[x,'col2']=df.at[x,'col1'] + df.at[x-1,'col2']
...等等,直到最后一行。
每行代码取决于以上代码的结果,因此我不确定是否可以使用滚动功能?我也尝试过.shift(1)
,但也没有成功。
基本上我需要从x = 1到x =最后一列计算以上
以以下示例为例:
col1 col2
0 0 0
1 1 value above (0) plus value from col1 (1) = 1
2 3 value above (1) plus value from col1 (3) = 4
有人可以帮忙吗?
答案 0 :(得分:0)
一种快速的解决方案,可以通过将其通用化来解决(这是针对特定问题的)
import pandas as pd
d = {'col1': [1, 2, 3], 'col2': [4, 5, 6]}
df = pd.DataFrame(data=d)
print(df,"\n\n")
x = len(df)
df.iloc[1:,1] = df.iloc[1:x,0].values + df.iloc[0:x-1,1].values
print(df)
我使用.value来解决给出NaNs的索引问题,并得到了遇到同样问题的post的帮助。
返回,
col1 col2
0 1 4
1 2 5
2 3 6
col1 col2
0 1 4
1 2 6
2 3 8