我有以下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
我需要计算每个Cost
的运行BrokenRule
总计,然后将其绘制为线图。
如果我要计算所有BrokenRule的运行总数,我只需使用cumsum()
。但是,我似乎无法找到一种方法来显示每个BrokenRule
的运行总计。也许可以同时使用cumsum()
和groupby()
,但我还没有能够让它发挥作用。
有什么建议吗? 感谢
答案 0 :(得分: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
(默认情况下按列),可以得到预期的结果。