当我读取一个日期,比如'01/12/2020'
,它的格式是dd/mm/yyyy
,pd.to_datetime()
,它检测到月份为01
。
pd.to_datetime('01/12/2020').month
>> 1
但是这种行为是不一致的。
当我们创建一个包含这种格式的日期列的数据框,并使用相同的to_datetime
函数进行转换时,它会检测到12
作为月份。
tt.dt.month[0]
>> 12
原因是什么?
pandas会自动尝试检测日期格式,这对您来说可能非常好,也可能很烦人。
要明确,使用dayfirst
参数:
pd.to_datetime('01/12/2020', dayfirst=False).month
# 1
pd.to_datetime('01/12/2020', dayfirst=True).month
# 12
歧义用法示例:
tt = pd.to_datetime(pd.Series(['30/05/2020', '01/12/2020']))
tt.dt.month
UserWarning: Parsing dates in DD/MM/YYYY format when dayfirst=False (the default) was specified. This may lead to inconsistently parsed dates! Specify a format to ensure consistent parsing.
tt = pd.to_datetime(pd.Series(['30/05/2020', '01/12/2020']))
0 5
1 1
dtype: int64