我试图通过使用Pandas的DataFrame来计算群的累积和。然而,我并没有得到预期的产出。
我的源代码:
import pandas as pd
Employee = [['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],
['CSE', 'CSE', 'EEE', 'EEE', 'CE', 'CE', 'ME', 'ME'],
['Cat-1', 'Cat-2', 'Cat-1', 'Cat-2', 'Cat-1', 'Cat-2', 'Cat-1', 'Cat-2']]
index = pd.MultiIndex.from_arrays(Employee, names=['Name', 'Dept', 'Category'])
Scale = [1, 2, 2, 3, 3, 1, 2, 3]
Salary = [100, 200, 200, 300, 300, 100, 200, 300]
df = pd.DataFrame({'scale': Scale,
'salary': Salary},
index=index)
df1 = df.groupby(['Category', 'scale']).cumsum()
print(df1)预期产出:
Cat-1 1 100
2 500
3 800
Cat-2 1 100
2 300
3 900取得的结果:
Name Dept Category
A CSE Cat-1 100
B CSE Cat-2 200
C EEE Cat-1 300
D EEE Cat-2 500
E CE Cat-1 600
F CE Cat-2 600
G ME Cat-1 1000
H ME Cat-2 1200群比不起作用。但是,如果我使用sum() (即df1 = df.groupby(['Category', 'scale']).sum())而不是cumsum(),groupby工作得很好。
发布于 2018-11-29 05:36:12
每个组有多个条目,因此您需要聚合数据两次,换句话说,使用groupby两次。一次得到每一组的和,一次计算这些和的累积和。
可以这样做:
df.groupby(['Category','scale']).sum().groupby('Category').cumsum()注意,cumsum应该应用于Category列所分区的组上,这样才能获得所需的结果。
https://datascience.stackexchange.com/questions/41834
复制相似问题