gpt4 book ai didi

python - Pandas DataFrame 在 Groupby 两列之后找到最大值并获取计数

转载 作者:太空宇宙 更新时间:2023-11-04 00:32:52 26 4
gpt4 key购买 nike

我有一个数据框 df 如下:

   userId  pageId  tag
0 3122471 e852 18
1 3122471 f3e2 18
2 3122471 7e93 18
3 3122471 2768 6
4 3122471 53d9 6
5 3122471 06d7 15
6 3122471 e31c 15
7 3122471 c6f3 2
8 1234123 fjwe 1
9 1234123 eiae 4
10 1234123 ieha 4

在使用 df.groupby(['userId', 'tag'])['pageId'].count() 按 userId 和 tag 对数据进行分组之后。我会得到:

userId   tag
3122471 2 1
6 2
15 2
18 3
1234123 1 1
4 2

现在我想找到每个用户拥有最多的标签。如下所示:

userId   tag
3122471 18
1234123 4

(注意:如果有多个标签具有相同的计数,我想使用函数 my_rule 来确定显示哪个)

最佳答案

您可以处理聚合数据。

In [387]: dff = df.groupby(['userId', 'tag'], as_index=False)['pageId'].count()

In [388]: dff
Out[388]:
userId tag pageId
0 1234123 1 1
1 1234123 4 2
2 3122471 2 1
3 3122471 6 2
4 3122471 15 2
5 3122471 18 3

In [389]: dff.groupby('userId').apply(lambda x: x.tag[x.pageId.idxmax()])
Out[389]:
userId
1234123 4
3122471 18
dtype: int64

关于python - Pandas DataFrame 在 Groupby 两列之后找到最大值并获取计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45161355/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com