使用.loc时,数据框排序不适用

时间:2019-08-04 18:12:29

标签: python pandas sorting dataframe

我需要通过datetime列my_date对熊猫数据框df进行排序。 I无论何时使用.loc排序都不适用。

df = df.loc[(df.some_column == 'filter'),]
df.sort_values(by=['my_date'])
print(dfolc)
# ...
# Not sorted! 
# ...
df = df.loc[(df.some_column == 'filter'),].sort_values(by=['my_date'])
# ...
# sorting WORKS!

这两种用途有什么区别?我对数据框缺少什么?

2 个答案:

答案 0 :(得分:1)

在第一种情况下,您没有就地执行操作:您应该使用df = df.sort_values(by=['my_date'])df.sort_values(by=['my_date'], inplace=True)

在第二种情况下,.sort_values()的结果已保存到df,因此打印df会显示已排序的数据帧。

答案 1 :(得分:0)

在代码df = df.loc[(df.some_column == 'filter'),] df.sort_values(by=['my_date']) print(dfolc)中,您使用的是df.loc() df.sort_values(),我不确定它是如何工作的。

在seconf行中,您正确地调用了df.loc().sort_values(),这是正确的方法。您不必两次使用df.表示法。