我找到了Pandas groupby cumulative sum并发现它非常有用。但是,我想确定如何计算反向累计和。在
该链接建议如下。在
df.groupby(by=['name','day']).sum().groupby(level=[0]).cumsum()
为了反向求和,我尝试对数据进行切片,但失败了。在
^{pr2}$编辑: 根据反馈,我试图实现代码并使数据帧变大:
import pandas as pd
df = pd.DataFrame(
{'name': ['Jack', 'Jack', 'Jack', 'Jill', 'Jill'],
'surname' : ['Jones','Jones','Jones','Smith','Smith'],
'car' : ['VW','Mazda','VW','Merc','Merc'],
'country' : ['UK','US','UK','EU','EU'],
'year' : [1980,1980,1980,1980,1980],
'day': ['Monday', 'Tuesday','Wednesday','Monday','Wednesday'],
'date': ['2016-02-31','2016-01-31','2016-01-31','2016-01-31','2016-01-31'],
'no': [10,30,50,40,40],
'qty' : [100,500,200,433,222]})
然后我尝试对多个列进行分组,但未能应用分组。在
df = df.groupby(by=['name','surname','car','country','year','day','date']).sum().iloc[::-1].groupby(level=[0]).cumsum().iloc[::-1].reset_index()
为什么会这样?我预计马自达的杰克·琼斯和大众的杰克·琼斯是一个单独的累计数量。在
您可以使用双^{} :
另一个列的解决方案是简化:
^{pr2}$编辑:
第二个
^{3}$groupby
中存在问题,需要添加更多级别-level=[0,1,2]
表示按第一个name
、第二个surname
和第三个car
级别分组。在或者可以按名称选择-请参见groupby enhancements in 0.20.1+:
相关问题 更多 >
编程相关推荐