Pandas转换datetime时日期格式不一致,日与月被颠倒
解决pandas日期转换中日月颠倒的问题
你的问题源于日期解析的格式歧义:
- 日期字符串是
日-月-年格式,但pd.to_datetime()默认会优先尝试月-日-年解析逻辑。 - 像
6-3-2020这种日和月数值都≤12的字符串,会被错误解析成2020-06-03;而18-3-2022因为18超出月份的合法范围(1-12),会自动按正确的日-月-年规则解析,最终导致timestamp列格式不一致。
解决方案:指定明确的日期格式
直接在pd.to_datetime()中通过format参数强制指定字符串格式,彻底消除解析歧义:
df['timestamp'] = pd.to_datetime(df['Datum WSM-09'], format='%d-%m-%Y %H:%M') df_daily_avg = df.groupby(pd.Grouper(freq='D', key='timestamp')).mean()
补充说明
如果你的日期字符串存在格式不统一的情况(比如部分日/月是两位数、部分是一位),也可以用dayfirst=True参数让pandas优先将第一个数字视为日期:
df['timestamp'] = pd.to_datetime(df['Datum WSM-09'], dayfirst=True)
不过指定format是最稳妥的方式,能确保所有日期都严格按预期规则解析。
内容的提问来源于stack exchange,提问作者Idw
相关产品推荐
相关产品推荐

