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

将DataFrame字符串索引转为DateTime时月份日期颠倒,求解决方案

解决Pandas字符串索引转DateTime时月份日期颠倒的问题

这种情况太常见了——大多是因为你的日期字符串格式是DD/MM/YYYY这类“日在前、月在后”的格式,但Pandas默认会按美式的MM/DD/YYYY来解析,自然就搞混了月份和日期。这里有几个靠谱的解决办法:

1. 明确指定日期格式(最稳妥)

如果你的日期字符串格式是固定的,直接用format参数告诉Pandas确切的解析规则,彻底避免歧义。比如你的索引是"01/05/2023"(代表5月1日),那格式就是%d/%m/%Y:

df_wt_ist.index = pd.to_datetime(df_wt_ist.index, format='%d/%m/%Y')

常用的格式符对应:

  • %d:两位数字的日期(01-31)
  • %m:两位数字的月份(01-12)
  • %Y:四位数字的年份(2023)
  • 如果是带时间的格式,比如"01/05/2023 14:30",就用%d/%m/%Y %H:%M

2. 强制优先解析日在前的格式

如果你的日期格式大多是日在前,但偶尔有例外(或者不确定具体格式),可以用dayfirst=True参数,让Pandas优先把第一个数字当作日期:

df_wt_ist.index = pd.to_datetime(df_wt_ist.index, dayfirst=True)

不过要注意:如果你的数据里同时存在MM/DD和DD/MM的混合格式,这个参数可能还是会出错,所以能确定格式的话,优先用第一种方法。

3. 读取数据时直接解析日期(从源头解决)

如果你的DataFrame是从文件(比如CSV)读取的,最好在读取阶段就处理日期索引,避免后续转换:

df_wt_ist = pd.read_csv('your_data.csv', index_col=0, parse_dates=True, dayfirst=True)

或者指定格式:

df_wt_ist = pd.read_csv('your_data.csv', index_col=0, parse_dates=True, date_parser=lambda x: pd.to_datetime(x, format='%d/%m/%Y'))

额外小技巧:处理无效日期

如果索引里有格式错误的字符串,可以用errors='coerce'把无效值转换成NaT(Not a Time),方便后续清洗:

df_wt_ist.index = pd.to_datetime(df_wt_ist.index, format='%d/%m/%Y', errors='coerce')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:32:42