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

Pandas DataFrame日期列排序结果不符合预期问题咨询

问题核心原因

日期列转换为datetime类型时,Pandas自动推断格式错误,把原始日期字符串中的月和日颠倒识别,导致datetime存储的实际值和你预期的日期不符,最终排序结果异常。

你代码里直接调用pd.to_datetime(df.Date)没有指定格式,Pandas默认会优先按月/日/年的逻辑推断日期,如果你的CSV原始日期是日/月/年的书写格式,就会出现解析错误:比如原始字符串12/01/2020会被识别为2020年1月12日,而你实际要的是2020年12月1日,自然排序顺序就不对。


解决方法

1. 明确指定日期解析格式(最稳妥,不会出错)

先确认CSV里原始日期的字符串格式,比如是日/月/年的格式,就给pd.to_datetime传入format参数明确指定解析规则:

import pandas as pd

df = pd.read_csv(outputcsv)
# 这里的%d代表日,%m代表月,%Y代表4位年份,根据你实际的原始格式调整即可
df['Date'] = pd.to_datetime(df['Date'], format='%d/%m/%Y')

2. 快速优先识别日(适合不想核对格式的场景)

如果只是要优先把日期开头的数字识别为日,可以直接加dayfirst=True参数:

df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)

3. 校验后再排序

转换完成后先校验几个日、月都小于12的日期,确认解析正确后再执行排序,还可以加ignore_index=True重置行索引,方便后续操作:

# 校验转换结果:输出原始日期、转换后年/月/日格式的对比
print(pd.concat([
    df['Date'].rename('原始转换结果'),
    df['Date'].dt.strftime('%Y-%m-%d').rename('标准格式展示')
], axis=1).head(10))

# 确认无误后排序
df.sort_values(by='Date', inplace=True, ignore_index=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:27:03