分类特征的聚合函数 group_by

Aggregation function group_by for categorical features

在每日购买记录中,我想应用一个聚合函数来保留当天的 "most" 重要交易,并具有 ['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,然后在 agg 中使用 min,例如:

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