Pandas sort_values 中的 KeyError

4
我想按照特定的列“Lat”对数据框进行排序。然而,虽然我打印出列名时,“Lat”清楚地显示出来,但当我尝试将其用作sort_values函数中的“by”参数时,我会收到KeyError。无论我使用哪个列名,都会得到关键错误。我已经尝试使用不同的列,就地运行,剥离列名,但似乎都不起作用。
print(lights_df.columns.tolist())
lights_by_lat = lights_df.sort_values(axis = 'columns', by = "Lat", kind 
= "mergesort")

输出:
['the_geom', 'OBJECTID', 'TYPE', 'Lat', 'Long']
KeyError: 'Lat'
^尝试排序后的输出

想要 axis='index'(或者直接省略,因为它是默认值) - ALollz
5
这里的混淆是因为对于排序(sort)而言,axis 指定了要排序的轴。你正在使用一列来更改行的顺序,因此需要使用 axis='index'。如果提供更好的 [mcve](最小化完整可重现示例),也许值得回答该问题。 - ALollz
2个回答

7

你只需删除轴参数即可:

lights_by_lat = lights_df.sort_values(by = "Lat", kind = "mergesort")

那么你应该没问题了。


请参阅@ALollz在原始帖子上的评论以获取解释。 - robertspierre

0
我认为这是因为你在错误的轴上进行搜索。 例如,这个数据框: DATAFRAME 假设: 我想按行轴以标签“1”排序。 所以你放了这个:
df.sort_values(by='1',axis=0,inplace=False)

但是结果出现错误:KeyError: '1' 解决方案是将轴更改为列:
df.sort_values(by='1',axis=1,inplace=False)

我认为这是因为你想按行标签"1"的数据进行排序,但轴是"索引",所以无法按"1"标签进行排序,因为数字在列轴上重新排序而不是索引轴。

希望这对其他人有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接