gpt4 book ai didi

python - 带有 bin 计数的 Pandas groupby

转载 作者:IT老高 更新时间:2023-10-28 20:34:00 25 4
gpt4 key购买 nike

我有一个如下所示的 DataFrame:

+----------+---------+-------+
| username | post_id | views |
+----------+---------+-------+
| john | 1 | 3 |
| john | 2 | 23 |
| john | 3 | 44 |
| john | 4 | 82 |
| jane | 7 | 5 |
| jane | 8 | 25 |
| jane | 9 | 46 |
| jane | 10 | 56 |
+----------+---------+-------+

我想将其转换为对属于某些 bin 的 View 进行计数,如下所示:

+------+------+-------+-------+--------+
| | 1-10 | 11-25 | 25-50 | 51-100 |
+------+------+-------+-------+--------+
| john | 1 | 1 | 1 | 1 |
| jane | 1 | 1 | 1 | 1 |
+------+------+-------+-------+--------+

我试过了:

bins = [1, 10, 25, 50, 100]
groups = df.groupby(pd.cut(df.views, bins))
groups.username.count()

但它只提供汇总计数,而不是用户计数。如何按用户获取 bin 计数?

总计数(使用我的真实数据)如下所示:

impressions
(2500, 5000] 2332
(5000, 10000] 1118
(10000, 50000] 570
(50000, 10000000] 14
Name: username, dtype: int64

最佳答案

您可以同时按 用户名分组,计算组大小,然后使用 unstack():

>>> groups = df.groupby(['username', pd.cut(df.views, bins)])
>>> groups.size().unstack()
views (1, 10] (10, 25] (25, 50] (50, 100]
username
jane 1 1 1 1
john 1 1 1 1

关于python - 带有 bin 计数的 Pandas groupby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34317149/

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