python - 如何通过另一列的值 pandas 聚合 groupBy
问题描述
我有一个像这样的数据框。
order_id product_id add_to_cart_order reordered user_id eval_set order_number order_dow order_hour_of_day days_since_prior_order
0 1 49302 1 1 112108 train 4 4 10 9.0
1 1 11109 2 1 112108 train 4 4 10 9.0
2 1 10246 3 0 112108 train 4 4 10 9.0
3 1 49683 4 0 112108 train 4 4 10 9.0
4 1 43633 5 1 112108 train 4 4 10 9.0
5 1 13176 6 0 112108 train 4 4 10 9.0
6 1 47209 7 0 112108 train 4 4 10 9.0
7 1 22035 8 1 112108 train 4 4 10 9.0
8 36 39612 1 0 79431 train 23 6 18 30.0
9 36 19660 2 1 79431 train 23 6 18 30.0
10 36 49235 3 0 79431 train 23 6 18 30.0
11 36 43086 4 1 79431 train 23 6 18 30.0
12 36 46620 5 1 79431 train 23 6 18 30.0
13 36 34497 6 1 79431 train 23 6 18 30.0
14 36 48679 7 1 79431 train 23 6 18 30.0
15 36 46979 8 1 79431 train 23 6 18 30.0
16 38 11913 1 0 42756 train 6 6 16 24.0
17 38 18159 2 0 42756 train 6 6 16 24.0
所以所有标记为 order_id == 1 的行都对应 1 个订单。我想弄清楚用户下了多少个独特的订单。结果应如下所示:
user_id unique_orders
112108 1
79431 1
42756 1
很明显,我应该 groupBy order_id
。但是这里的 agg 是什么?我需要做两个 groupBys 吗?做这个的最好方式是什么?
解决方案
正如评论中@Quang Hoang 所建议的那样,这个问题是GroupBy.nunique的直接应用,我添加了获得dataframe
预期输出中显示的类似内容所必需的内容:
df_nunique=df.groupby('user_id')['order_id'].nunique().rename('unique_orders').reset_index()
print(df_nunique)
user_id unique_orders
0 42756 1
1 79431 1
2 112108 1
推荐阅读
- function - delphi属性读取函数加值
- javascript - 需要在Javascript中删除数组中每个单词末尾的s
- android - 在 android Chrome 自定义选项卡中禁用嵌入式媒体
- python - 将所有值 str 列数据框与其他数据框 str 列匹配
- git - 为什么我们应该在 git commit 命令中使用 -m?
- java - Java 环境变量设置
- javascript - laravel vue,在刀片模板中使用 vue 代码
- javascript - 如何使用 JavaScript 或 jQuery 中的正则表达式从多行字符串中提取值?
- c# - HttpWebRequest 错误:底层连接已关闭:接收时发生意外错误
- amazon-web-services - 如何限制步进函数中步进的并发性