熊猫新手,所以也许我错过了一个大点子?我有一个像(500,4)
形状的注册事务的熊猫DataFrame
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笔记本的)。我还重新运行了从import CSV到此代码的整个笔记本。而且,我也是Python3的新手(从2.7开始),所以我有时会被它卡住,但我看不出在这种情况下这有什么关系。
另一个帖子也有类似的问题,Python pandas dataframe sort_values does not work。在该实例中,排序是针对列类型string
的。但正如您所看到的,这里的所有列都是明确可排序的。
为什么我的Pandas DataFrame不能使用sort_values
显示新订单
发布于 2017-03-06 04:47:10
df.sort_values(['Total Due'])
返回一个已排序的DF,但它不会就地更新DF。
所以要明确地这样做:
df = df.sort_values(['Total Due'])
或
df.sort_values(['Total Due'], inplace=True)
发布于 2019-06-27 07:33:56
我的问题是,我没有返回结果数据帧,所以PyCharm没有费心去更新所说的数据帧。以return关键字命名dataframe修复了此问题。
Edit:我在方法的末尾使用了return
,而不是return df
,这是调试器必须注意到的,因为尽管我使用了显式的就地排序,但df
并没有更新。
https://stackoverflow.com/questions/42613581
复制相似问题