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

使用pandas to_datetime函数时的日期解析错误求助

Fixing Date Parsing Mix-Ups with pd.to_datetime() for dd/mm/yyyy Formats

这个问题太典型了——当你的日期是dd/mm/yyyy格式,但其中部分日期的日和月数值都在1-12之间时(比如11/04/2018),pandas的自动日期推断功能会混淆美式(mm/dd/yyyy)和欧式(dd/mm/yyyy)格式,导致部分日期的日和月颠倒。

这里有两个直接有效的解决办法:

方法1:使用dayfirst=True参数

明确告诉pandas,日期字符串的日部分在前,这样它就会优先按照dd/mm/yyyy的规则解析:

import pandas as pd

# 读取并合并数据
df1 = pd.read_csv('sales.csv')
df2 = pd.read_csv('sales1.csv')
df3 = pd.read_csv('sales2.csv')
df4 = pd.read_csv('sales3.csv')
df = pd.concat([df1, df2, df3, df4])

# 转换日期,指定日在前
df['Transaction date'] = pd.to_datetime(df['Transaction date'], dayfirst=True)
print(df['Transaction date'])

方法2:严格指定日期格式

如果你确定所有日期都是dd/mm/yyyy格式,可以直接用format参数强制pandas按照这个格式解析,完全避免歧义:

import pandas as pd

# 读取并合并数据
df1 = pd.read_csv('sales.csv')
df2 = pd.read_csv('sales1.csv')
df3 = pd.read_csv('sales2.csv')
df4 = pd.read_csv('sales3.csv')
df = pd.concat([df1, df2, df3, df4])

# 严格按照dd/mm/yyyy格式转换
df['Transaction date'] = pd.to_datetime(df['Transaction date'], format='%d/%m/%Y')
print(df['Transaction date'])

两种方法都能让你得到统一的yyyy-mm-dd格式的datetime64[ns]类型日期,解决第24-29行的颠倒问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:59:15