我有一个如下数据框(下面的具体数据,这是通用的)。没有给我累积的总和:
no
name day
Jack Monday 10
Tuesday 40
Wednesday 90
Jill Monday 40
Wednesday 150
我想“展开”累积金额给我这样的东西:
print df
name day no
0 Jack Monday 10
1 Jack Tuesday 30
2 Jack Wednesday 50
3 Jill Monday 40
4 Jill Wednesday 110
从本质上讲,我想做类似以下的事情,但反过来说: Pandas groupby cumulative sum
答案 0 :(得分:4)
IIUC您可以执行以下操作:
In [103]:
df.groupby(level=0).diff().fillna(df).reset_index()
Out[103]:
name day no
0 Jack Monday 10.0
1 Jack Tuesday 30.0
2 Jack Wednesday 50.0
3 Jill Monday 40.0
4 Jill Wednesday 110.0
groupby
第一个索引级别,并调用diff
来计算每个组的行间差异,并使用原始df值填充NaN
值并调用reset_index
< / p>
答案 1 :(得分:0)
这是一种基于zip的方法。它创建两个序列,第二个序列偏移1,然后减去两者之间的差。
[n-nn for n,nn in zip(df['No'],df['No'][1:]+[0])]