熊猫新手,所以也许我错过了一个大创意?
我有一个Pandas DataFrame注册事务,其形状如(500,4)
:
Time datetime64[ns]
Net Total float64
Tax float64
Total Due float64
我正在使用 Python3 Jupyter笔记本中的代码。我无法通过排序任何列。通过不同的代码示例进行排序,我在检查df时没有看到输出重新排序。所以,我把问题简化为试图只订购一列:
df.sort_values(by='Time')
# OR
df.sort_values(['Total Due'])
# OR
df.sort_values(['Time'], ascending=True)
无论使用哪个列标题或哪个布尔参数,显示的结果都不会改变顺序。
认为它可能是一个Jupyter的事情,我使用print(df)
,df.head()
和HTML(df.to_html())
预览了结果(最后一个例子是Jupyter笔记本)。我还将整个笔记本从导入CSV重新运行到此代码。而且,我也是Python3的新手(从2.7开始),所以我有时会遇到困难,但我不知道在这种情况下它是如何相关的。
另一篇帖子也有类似的问题,Python pandas dataframe sort_values does not work。在该实例中,排序是在列类型string
上。但正如您所看到的,这里的所有列都是明确可排序的。
为什么我的Pandas DataFrame不使用sort_values
显示新订单?
答案 0 :(得分:36)
df.sort_values(['Total Due'])
会返回已排序的DF,但它不会更新DF。
明确地这样做:
df = df.sort_values(['Total Due'])
或
df.sort_values(['Total Due'], inplace=True)
答案 1 :(得分:0)
我的问题,Fyi,是我没有返回结果数据帧,因此PyCharm并没有费心去更新所述数据帧。在return关键字之后命名数据框可以解决此问题。