避免在熊猫数据框中循环-python

时间:2020-07-14 11:04:11

标签: pandas loops cython

我在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函数,但是我不知道如何使用

1 个答案:

答案 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