如何在Pandas中按location和box分组统计箱数量并生成目标结果?
解决方案:按location和box分组统计数量
问题原因
你当前的代码无法生成目标结果,是因为直接将groupby的size()结果赋值给原DataFrame的新列时,分组后的多级索引与原DataFrame的索引不匹配,会导致大量缺失值,且无法得到去重后的分组统计结果。
正确代码
import pandas as pd # 假设原始数据已存入df result = df.groupby(['location', 'box']).size().reset_index(name='box count') # 调整列顺序匹配期望输出 result = result[['location', 'box count', 'box']] print(result)
代码说明
df.groupby(['location', 'box']).size():按location和box组合分组,统计每个分组内的记录条数,即每个box在对应location下的出现次数。.reset_index(name='box count'):将分组生成的多级索引转为普通列,并把统计结果列命名为box count。- 最后调整列的顺序,让输出列顺序与目标格式一致。
运行后输出结果将完全匹配你提供的期望格式:
location box count box 0 CA 3 box11 1 CA 3 box86 2 CA 3 box99 3 NY 2 box55 4 NY 2 box66
内容的提问来源于stack exchange,提问作者Lynn
相关产品推荐
相关产品推荐

