使用pandas merge做笛卡尔积时报KeyError: 'cross'是什么原因?
报错根源
你使用的pandas版本低于1.2.0。how='cross' 是pandas 1.2.0版本才正式新增的merge参数取值,专门用于快速实现笛卡尔积操作。低于该版本的pandas无法识别这个参数值,会错误地将'cross'当做你指定的合并关联字段名,在两个DataFrame中查找对应字段,查找失败就抛出了KeyError: 'cross'报错。
补充说明
你调整后的写法是旧版本pandas实现笛卡尔积的标准兼容方案:
- 给两个DataFrame都新增值恒为1的临时键
key - 按
key字段合并后,所有行都会完成关联,自然得到全量笛卡尔积 - 最后删除临时键
key,最终结果和how='cross'的输出完全一致
如果要使用how='cross'写法,先运行print(pd.__version__)确认当前pandas版本,升级到1.2.0及以上版本即可正常使用。
内容的提问来源于stack exchange,提问作者Hanna
相关产品推荐
相关产品推荐

