python-3.x - Python Pandas 条件求和并减去前一行
问题描述
我是新来的,我需要一些关于 python pandas 的帮助。我需要帮助创建一个新列,在其中我得到另一个列的总和 + 这个计算行的前一行。
这是我的例子:
df = pd.DataFrame({
'column0': ['x', 'x', 'y', 'x', 'y', 'y', 'x'],
'column1': [50, 100, 30, 0, 30, 80, 0],
'column2': [0, 0, 0, 10, 0, 0, 30],
})
print(df)
column0 column1 column2
0 x 50 0
1 x 100 0
2 y 30 0
3 x 0 10
4 y 30 0
5 y 80 0
6 x 0 30
我使用 loc 来过滤这个 DataFrame,如下所示:
df = df.loc[df['column0'] == 'x']
df = df.reset_index(drop=True)
现在...当我尝试获取输出时,我没有得到正确的结果:
df['Result'] = df['column1'] + df['column2']
df['Result'] = df['column1'] + df['column2'] + df['Result'].shift(1)
print(df)
column0 column1 column2 Result
0 x 50 0 NaN
1 x 100 0 100.0
2 x 0 10 10.0
3 x 0 30 30.0
我只想要这个输出....
column0 column1 column2 Result
0 x 50 0 50
1 x 100 0 150.0
2 x 0 10 160.0
3 x 0 30 190.0
非常感谢!
解决方案
您可以使用.cumsum()计算列的累积总和:
df = pd.DataFrame({
'column1': [50, 100, 30, 0, 30, 80, 0],
'column2': [0, 0, 0, 10, 0, 0, 30],
})
df['column3'] = df['column1'].cumsum() - df['column2'].cumsum()
这导致:
column1 column2 column3
0 50 0 50
1 100 0 150
2 30 0 180
3 0 10 170
4 30 0 200
5 80 0 280
6 0 30 250