[在每天的购买记录中,我想应用一个聚合函数,以['Bananas', 'Apples', 'Coke', 'Lollipop', 'Chewing gum']
给出的任意顺序保留一天中最重要的交易。
D T ITEM
1 3 Apples
1 5 Chewing gum
1 10 Lollipop
2 2 Bananas
2 3 Apples
2 1 Coke
所需的输出
D T ITEM
1 18 Apples
2 6 Bananas
是否有一个我可以在---中使用的x函数groupby['D'].agg({'T':'sum', 'ITEM':x)
?
您可以按照列表末尾的顺序将ITEM列转换为Categorical,然后在min
中使用agg
,例如:
order = ['Bananas', 'Apples', 'Coke', 'Lollipop', 'Chewing gum']
print (df.assign(ITEM=lambda x: pd.Categorical(x['ITEM'],
categories=order,
ordered=True))
.groupby('D')
.agg({'T':'sum', 'ITEM':'min'}))
T ITEM
D
1 18 Apples
2 6 Bananas