如何避免Pandas列中字符串转日期的识别错误与格式问题
解决Pandas日期字符串解析中日月颠倒的问题
直接用astype('datetime64[ns]')转换时,Pandas会自动推断日期格式,但当日、月数值都≤12时,会优先采用MM-DD-YYYY的解析逻辑,导致12-10-2021被误判为12月10日;而13-10-2021因为13超过月份的最大取值12,才会被正确识别为10月13日。
要得到正确的YYYY-MM-DD格式结果,你需要明确指定原字符串的日期格式,推荐使用pd.to_datetime()并配合format参数:
import pandas as pd # 示例数据 df = pd.DataFrame({'Date': ["12-10-2021 00:00", "13-10-2021 00:00"]}) # 指定原格式为"DD-MM-YYYY HH:MM"(注意日期与时间间的两个空格) df['Date'] = pd.to_datetime(df['Date'], format='%d-%m-%Y %H:%M')
执行后df['Date']的结果会是:
0 2021-10-12 1 2021-10-13 Name: Date, dtype: datetime64[ns]
如果你的数据中存在多种日期格式混合,也可以通过dayfirst=True参数强制优先解析日部分:
df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)
不过这种方式的效率略低于指定明确格式,且仍存在歧义风险,因此优先推荐指定format参数的方案。
内容的提问来源于stack exchange,提问作者mrsprawin
相关产品推荐
相关产品推荐

