如何将不同格式的字符串(YYYY-MM-DD,DD-MM-YYYY)转换为pandas中一种格式的日期对象?

时间:2018-02-03 13:37:36

标签: python pandas date

我有一个字符串对象列,其中包含不同的格式(YYYY-MM-DD,DD-MM-YYYY)。如何转换为日期对象的DD-MM-YYYY。

我试过了, df ['accepted_date'] = pd.to_datetime(df ['accepted_date'],format ='%d-%m-%Y')

我得到了错误 时间数据'1899-12-31'与格式'%d-%m-%Y'(匹配)

不匹配

谢谢,

1 个答案:

答案 0 :(得分:1)

让pandas解析日期,但是应该交换几天的月份:

response.product

使用格式和参数0的{​​{3}}会更好,对于非匹配,只返回与df['accepted_date'] = pd.to_datetime(df['accepted_date']) 匹配的日期时间。最后一次使用to_datetime加入所有errors='coerce' - NaT将替换为另一个Series的值:

NaT

<强>详细

Series

编辑:

另一个解决方案是使用参数df = pd.DataFrame({'accepted_date':['2017-01-02','07-08-2017','20-03-2017','2017-01-04']}) d1 = pd.to_datetime(df['accepted_date'], format='%d-%m-%Y', errors='coerce') d2 = pd.to_datetime(df['accepted_date'], format='%Y-%m-%d', errors='coerce') df['accepted_date1'] = d1.combine_first(d2) df['accepted_date2'] = pd.to_datetime(df['accepted_date']) print (df) accepted_date accepted_date1 accepted_date2 0 2017-01-02 2017-01-02 2017-01-02 1 07-08-2017 2017-08-07 2017-07-08 <-swapped dd-mm 2 20-03-2017 2017-03-20 2017-03-20 3 2017-01-04 2017-01-04 2017-01-04

print (d1)
0          NaT
1   2017-08-07
2   2017-03-20
3          NaT
Name: accepted_date, dtype: datetime64[ns]

print (d2)
0   2017-01-02
1          NaT
2          NaT
3   2017-01-04
Name: accepted_date, dtype: datetime64[ns]