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

Posted

技术标签:

【中文标题】Python - Pandas - 展开/删除累积和【英文标题】:Python - Pandas - Unroll / Remove Cumulative Sum 【发布时间】:2016-07-26 21:48:50 【问题描述】:

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

                 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

【问题讨论】:

这里有多少个索引 我不确定发生了什么变化,但我清理了我的文件并重新运行了您的代码,现在它可以工作了。为了清楚起见,我删除了对任何错误的提及。感谢您的帮助。 【参考方案1】:

这是一个基于 zip 的方法。它创建两个系列,第二个偏移 1,然后减去两者之间的差。

[n-nn for n,nn in zip(df['No'],df['No'][1:]+[0])]

【讨论】:

【参考方案2】:

如果我理解正确,您可以执行以下操作:

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

【讨论】:

@AmiTavory 是的,我以为我会得到负值,我会删除它 请使用示例数据和代码编辑您的问题,以演示问题和所需的输出

以上是关于Python - Pandas - 展开/删除累积和的主要内容,如果未能解决你的问题,请参考以下文章

Pandas Python Groupby 累积和反向

日期时间范围之间的 Python Pandas 累积列

计算 Pandas 中每天重置的累积盘中指标

Python pandas 字典上的月份分割

pandas小技巧

python,爬虫,pandas的DataFrame处理后的数据,输出到文本后中间这些数据都没有展开怎么办