使用python处理数据的复杂要求

时间:2019-04-03 02:57:46

标签: python pandas pandas-groupby

这是我的原始文本字段

Area    Brand   Points
USA     Nike    86
USA     Addidas 85
USA     Speedo  84
USA     Nike    83
USA     Speedo  82
USA     Nike    81
Japan   Nike    84
Japan   Nike    85
Japan   Nike    86
Japan   Addidas 82
Japan   Addidas 80
Japan   Addidas 86
Japan   Speedo  84
Japan   Speedo  82

对于“面积”列,它仅显示唯一值 对于“品牌”列,它将显示高频值 对于“积分”列,它仅显示mean()结果

所以,它应该和下面的一样。

Area    | ModBrand        | AvePoints
USA     | NIKE            | MEAN NUMBER
Japan   | [NIKE, Addidas] | MEAN NUMBER

我知道我可以对区域使用groupby函数,对点使用均值

data = data.groupby(['Area']).mean().reset_index()

但对于“品牌”列。你可以给我一些提示吗?

谢谢

1 个答案:

答案 0 :(得分:0)

您可以像这样使用pd.Series.mode

df.groupby('Area').agg({'Brand': lambda x: x.mode().values.tolist(), 'Points': 'mean'})

礼物:

                 Brand  Points
Area                          
Japan  [Addidas, Nike]  83.625
USA             [Nike]  83.500