使用python进行数据争用的复杂要求

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

这是我的原始文本字段

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

对于Area列,它只显示唯一值For Brand列,它将显示高频值For Points列,它只显示mean()结果

所以,它应该与下面相同。

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

我知道我可以使用区域的groupby函数和Points的意思

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

但对于品牌专栏。你能给我一些提示吗?

谢谢

python pandas pandas-groupby
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.