用于分类特征的聚合函数group_by

问题描述 投票:1回答:1

[在每天的购买记录中,我想应用一个聚合函数,以['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)

python pandas pandas-groupby categorical-data
1个回答
1
投票

您可以按照列表末尾的顺序将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
© www.soinside.com 2019 - 2024. All rights reserved.