我在python中有一个pandas数据框。
我需要遍历每一列并计算一个值,并基于此值,我必须计算下一行的值。
现在我正在使用iterrows():
value = 1000
df['calculated_column'] = 0
for index, row in df.iterrows():
df.loc[index,'calculated_column'] = (df.loc[index -1 ,'calculated_column'] - df.loc[index,'column_to_sum']) if index != 0 else value
因此,它将是这样的:
row 1 => df['calculated_column'] = 1000
row 2 => df['calculated_column'] = 1000 + df['column_to_sum'] = 1100
row 3 => df['calculated_column'] = 1100 + df['column_to_sum'] = 1200
我读到应该避免对熊猫数据框进行迭代:How to iterate over rows in a DataFrame in Pandas
如何在没有麻烦的情况下执行此过程?我已经尝试过使用apply函数,但是我不知道如何使用
答案 0 :(得分:1)
您可以使用cumsum:
df = pd.DataFrame({'x': [20, 30, 50, 50, 35]})
df['y'] = 1000 + df['x'].cumsum()
print(df)
x y
0 20 1020
1 30 1050
2 50 1100
3 50 1150
4 35 1185