Python减去Python数据框的累积列

时间:2020-01-07 17:14:38

标签: python pandas

我有一个每日累计金额,我想将其细分为每日价值。当然,也需要将其分组。

例如,我想获取此数据框并返回以下结果:

ID    Date            Cum Value
3306  2019-06-01      100.0 
3306  2019-07-01      200.0 
3306  2019-08-01      350.0
4408  2019-06-01      200.0
4408  2019-07-01      375.0
4408  2019-08-01      400.0

ID    Date           Cum Value  Daily Value
3306  2019-06-01      100.0     100.0
3306  2019-07-01      200.0     100.0
3306  2019-08-01      350.0     150.0
4408  2019-06-01      200.0     200.0
4408  2019-07-01      375.0     175.0
4408  2019-08-01      400.0     025.0

我尝试过

df['Daily Value'] = df['Cum Value'].sub(df['Cum Value'].shift())
df['Daily Value'].iloc[0] = df['Cum Value'].iloc[0]

1 个答案:

答案 0 :(得分:1)

我们还可以使用Series.sub + GroupBy.shift

df['Daily Value']=df['Cum Value'].sub(df.groupby('ID')['Cum Value'].shift(fill_value=0))
print(df)

输出:

     ID        Date  Cum Value  Daily Value
0  3306  2019-06-01      100.0        100.0
1  3306  2019-07-01      200.0        100.0
2  3306  2019-08-01      350.0        150.0
3  4408  2019-06-01      200.0        200.0
4  4408  2019-07-01      375.0        175.0
5  4408  2019-08-01      400.0         25.0

我认为它可能会更快