带PeriodIndex的Pandas DataFrame合并报错:join()遇意外参数'sort'
为什么会出现
join() got an unexpected keyword argument 'sort'错误? 这个问题大概率是pandas版本不兼容导致的,我来给你拆解清楚:
- 首先,
sort参数是在pandas 1.0.0版本才正式加入join()方法的。如果你的运行环境里pandas版本低于1.0.0,join()根本不认识这个参数——哪怕你自己没在代码里写sort,在合并带有PeriodIndex类型索引的DataFrame时,pandas内部的合并逻辑可能会自动尝试传递这个参数,直接触发报错。 - 另外,也有可能你不小心混淆了
join()和merge()的参数:merge()在更早的pandas版本里就支持sort,但join()是后来才加上的,要是你之前习惯给merge()传sort,不小心写到join()里了,也会出这个错(不过看你的代码应该不是这个情况)。
怎么解决?
- 先检查你的pandas版本:运行
print(pandas.__version__)看看版本号。如果低于1.0.0,直接升级到最新稳定版就行:pip install --upgrade pandas。 - 要是不想升级,那就换用
merge()方法来实现外连接,它在旧版本里支持索引合并且不会有这个问题:comp = pd.merge(comp, df, left_index=True, right_index=True, how='outer') - 最后别忘了确认两个DataFrame的索引确实都是正确的
PeriodIndex类型,避免因为索引类型不一致触发奇怪的内部逻辑:print(type(comp.index)) print(type(df.index))
内容的提问来源于stack exchange,提问作者ajm
相关产品推荐
相关产品推荐

