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

Pandas如何正确排序点格式(%d.%m.%y)的日期索引列

问题根源

排序异常核心原因是日期索引为字符串类型,而非pandas原生支持的datetime时间类型。
字符串排序默认按逐字符字典序比对,当前日期格式为日.月.年,字符串比对时会优先匹配最靠前的「日」字段字符,因此会出现所有日期先按日值升序、遍历完所有年月的同值日后才跳转下一个日值的结果,此时直接调用sort_index()本质是对字符串排序,无法得到按真实时间先后排列的效果。
异常排序效果参考:
排序异常示例

解决步骤
  • 第一步:将字符串格式的索引转换为pandas的DatetimeIndex类型,转换时指定和现有日期匹配的格式规则,避免解析错误:
import pandas as pd
# 转换索引为日期类型
output.index = pd.to_datetime(output.index, format="%d.%m.%Y")

格式参数说明:%d对应2位日期、%m对应2位月份、%Y对应4位年份(如示例中的2022),如果实际数据是2位年份(如22代表2022),将%Y替换为%y即可。

  • 第二步:类型转换完成后调用索引排序方法,即可得到按真实时间先后升序的正确结果:
output.sort_index(inplace=True)
验证方式

转换完成后执行print(output.index.dtype),如果返回值为datetime64[ns]即代表类型转换成功,后续排序、时间序列计算等操作都不会再出现字符串排序类的异常。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 02:54:21