Python / Pandas 运行总计

2 投票
1 回答
1466 浏览
提问于 2025-04-29 05:23

我有一个这样的 pandas 数据框:

Date          BrokenRule    Cost
2014-01-01    abc           100
2014-01-02    xyz           50
2014-01-03    abc           40
2014-01-04    xyz           70
2014-01-05    xyz           10

我需要计算每个 BrokenRule 的累计 Cost 总额,然后将其绘制成折线图。

如果我要计算所有 BrokenRule 的累计总额,我只需要用 cumsum() 就可以了。但是我似乎找不到方法来显示每个 BrokenRule 的累计总额。也许可以把 cumsum()groupby() 一起使用,但我一直没能成功。

有什么建议吗?谢谢

暂无标签

1 个回答

3

这段代码

df.set_index("BrokenRule", append=True).unstack().fillna(0).cumsum()

运行后得到的结果是

            Cost     
BrokenRule   abc  xyz
Date                 
2014-01-01   100    0
2014-01-02   100   50
2014-01-03   140   50
2014-01-04   140  120
2014-01-05   140  130

通过把新加的 BrokenRule 索引层展开,我们为每个不同的值创建了一列。先用零填充,然后默认按列进行 cumsum 操作,这样就能得到我们希望的结果。

撰写回答