Python groupby多列统计频次报ValueError: Grouper and axis must be same length
pandas 两列组合频次统计报错解决方案
你遇到的错误ValueError: Grouper and axis must be same length的中文含义为:值错误:分组键与待分组的轴长度必须一致
常见触发原因
- 传入的
col_y不是base_plot的列名字符串,而是一个长度和base_plot行数不匹配的序列/列表,pandas会把这个序列直接当成分组键,长度对不上就触发报错 base_plot之前做过切片、过滤、缺失值删除等操作后没有重置索引,旧索引长度和实际数据行数不一致,分组时对齐失败base_plot存在重名列,传入分组的列名匹配到了多列数据导致长度异常
修复步骤
- 先确认分组键的正确性,运行以下代码核对:
# 确认col_y是字符串类型的目标列名 print(type(col_y), col_y) # 确认pred和col_y都在DataFrame的列名列表中 print(base_plot.columns.tolist())
- 列名确认无误后,优先使用更适配频次统计的
value_counts方法实现需求,代码更简洁且不易触发索引对齐问题:
base_plot2 = base_plot.value_counts(["pred", col_y], sort=False).reset_index(name='频次')
- 如果要保留原
groupby的写法,先重置索引清除无效旧索引即可:
base_plot2 = base_plot.reset_index(drop=True).groupby(["pred", col_y]).size().reset_index(name='频次')
- 若还是报错,运行
print(base_plot.info())核对DataFrame的实际行数、列数是否符合预期,排除数据本身的异常问题。
内容的提问来源于stack exchange,提问作者Ice Kame
相关产品推荐
相关产品推荐

