使用pandas sort_values时已存在列仍触发KeyError求助
问题分析与解决
嘿,我太懂这种明明列存在却报KeyError的迷惑了!问题出在你对sort_values方法里axis参数的理解上——你完全搞反了它的作用方向。
咱们拆解下:
- 当你设置
axis=1时,sort_values是基于行的内容来排序列,这时候by参数需要传入的是行索引的标识(比如行号、行名),而不是列名。你传入了列名"Top",程序自然找不到对应的行,就抛出KeyError了。 - 而你的需求明显是按"Top"列的值来排序行,这时候应该用默认的
axis=0(这个参数可以直接省略,因为默认就是0),此时by参数才是指定用来排序的列名。
修正后的代码应该是这样:
temp_df = pd.DataFrame(temp, columns=["Top","Column number","Row number"]) # 省略axis参数(默认axis=0),按"Top"列的值排序行 temp_df = temp_df.sort_values(by=["Top"])
如果哪天你真的需要按行来排序列(比如按第一行的数值大小重新排列所有列),那才需要用axis=1,比如:
# 按索引为0的行的值排序所有列 temp_df = temp_df.sort_values(by=0, axis=1)
内容的提问来源于stack exchange,提问作者Ravi
相关产品推荐
相关产品推荐

