我需要通过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!
这两种用途有什么区别?我对数据框缺少什么?
答案 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.
表示法。