是否有更简便的方法从pandas groupby结果提取对象并生成统计字典?
从Pandas Groupby结果生成商品统计字典的简化方案
核心实现逻辑
不需要嵌套循环遍历索引,直接用pandas内置的分组、过滤、统计方法即可完成需求,代码更简洁,执行效率更高:
import pandas as pd # 构造示例DataFrame data = {'Order ID': ['147268', '148041', '149343', '149964', '149350', '141732', '149620', '142451', '146039', '143498', '141316', '144804', '144804', '145270', '142789'], 'Product': ['Wired Headphones', 'USB-C Charging Cable', 'Apple Airpods Headphones', 'AAA Batteries (4-pack)', 'USB-C Charging Cable', 'iPhone', 'Lightning Charging Cable', 'AAA Batteries (4-pack)', '34in Ultrawide Monitor', 'AA Batteries (4-pack)', 'AAA Batteries (4-pack)', 'Wired Headphones', 'iPhone', 'Google Phone', 'AAA Batteries (4-pack)']} df = pd.DataFrame(data) # 核心代码(按重复Order ID统计逻辑) # 1. 筛选出包含多个商品的Order ID multi_prod_order_ids = df.groupby('Order ID').size()[lambda x: x > 1].index # 2. 过滤对应订单的商品记录,统计频次转字典 product_dict = df[df['Order ID'].isin(multi_prod_order_ids)]['Product'].value_counts().to_dict()
如果你的实际业务逻辑是按Order Date分组,统计多商品日期下的商品出现次数,只需要把上面代码中的Order ID替换为Order Date即可,和你原有代码的逻辑完全对齐。
代码说明
- 先通过分组统计每个分组的记录数,筛选出符合条件(记录数>1)的分组键
- 直接过滤出符合条件的分组对应所有记录
- 对
Product列做频次统计后直接转字典,不需要手动遍历更新计数器
内容的提问来源于stack exchange,提问作者Sleepelite
相关产品推荐
相关产品推荐

