You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

拼接Pandas DataFrame后按多列排序未生效问题咨询

Pandas排序未生效?踩中默认参数的坑啦!

嘿,我太懂你遇到的这个问题了!我之前刚用Pandas的时候也踩过这个一模一样的坑😅

先给你拆解问题根源:你拼接DataFrame的操作AB = pd.concat([A,B],ignore_index=True)完全没问题,这一步确实把A和B合并成了一个新的DataFrame。但问题出在排序的那一行——Pandas的sort_values()方法默认不会修改原DataFrame,而是返回一个排序后的新对象(默认参数inplace=False)。

如果你只是单独运行AB.sort_values(['geohash','timestamp']),却没有把这个返回的结果重新赋值给AB,那原来的AB还是保持拼接后的原始顺序,根本没被改动!你看到的“实际结果”其实就是拼接后未排序的原始数据。

那怎么解决呢?给你两种常用的正确操作方式:

方法一:重新赋值覆盖原变量

把排序后的结果重新赋值给AB,这样AB就会变成排序后的版本:

AB = pd.concat([A,B],ignore_index=True)
AB = AB.sort_values(['geohash','timestamp'])

方法二:用inplace=True直接修改原对象

如果你不想重新赋值,可以在调用sort_values()时加上inplace=True参数,这样就会直接在原AB上完成排序操作:

AB = pd.concat([A,B],ignore_index=True)
AB.sort_values(['geohash','timestamp'], inplace=True)

按照上面任意一种方式操作后,你再查看AB,就能得到你预期的排序结果了:

geohash timestamp
0 a2a 15
1 a2b 15
2 b3a 14
3 b3b 14

内容的提问来源于stack exchange,提问作者Karl Birkkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:24:33