Python - Pandas - 展开/删除累积总和

时间:2016-04-06 13:03:33

标签: python python-2.7 pandas dataframe

我有一个如下数据框(下面的具体数据,这是通用的)。没有给我累积的总和:

                 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

2 个答案:

答案 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])]