我有一个熊猫数据帧(df)代表不同个人每月的开支。数据框中的第一列是指人员ID,第二列是指费用类别,第三列是指花费的金额。见下表示例:
d = {'PersonID': ['A','A','A','A','A','A','A','A','B','B','B','B','B','B'], 'Category': ['Food','Food','Food','Food','Travel','Travel','Travel','Travel','Food','Food','Food','Travel','Travel','Travel'], 'Expenditure':[10,15,5,20,500,100,1000,2000,10,30,10,800,1000,400]}
df = pd.DataFrame(data=d)
对于每个人,我想得到食品类中最大的三项费用之和,以及旅行类中最大的两项费用之和
对于上面的示例表,我需要下表:
我试图使用下面的代码,但问题是我不能在不同的类别中指定不同的N最大开销
df.groupby(['PersonID','Category'])['Expenditure'].nlargest(2).sum(level=0)
方法是先按类别拆分数据帧,然后按总和分组,然后将结果串联在一起:
输出:
使用字典和列表理解:
相关问题 更多 >
编程相关推荐