将默认日期时间对象值提供给pandas.to_datetime()

时间:2018-05-16 01:48:15

标签: python-3.x pandas datetime

我在字符串中有一些日期,使用to_datetime()转换为datetime对象的格式不同。但是,字符串列表还有一些我想要转换为默认日期的垃圾值。

import pandas as pd
import datetime as dt

print(df)

       dates
0   2018-02-12
1   2018-03-19
2   12-24-2018
3   garbage

我使用errors='coerece'来避免抛出异常。它产生NaT,我希望在我的情况下转换为默认日期2018-12-31。

df['dates'] = pd.to_datetime(df['dates'], errors='coerce')

结果如下。

      dates
0   2018-02-12
1   2018-03-19
2   2018-12-24
3   NaT

方法

我正在检查给定的值是否是有效的日期时间。如果没有,请输入默认的datetime对象。但由于某种原因,它会产生所有默认值。

df['dates'].apply(lambda x: dt.datetime(2018,12,31) if x is not dt.datetime else x)

当前输出

     dates
0   2018-12-31
1   2018-12-31
2   2018-12-31
3   2018-12-31

预期输出:

     dates
0   2018-02-12
1   2018-03-19
2   2018-12-24
3   2018-12-31

有没有办法给to_datetime()函数一个默认日期,这样就不会产生NaT?如果没有,我如何在之后设置默认日期?

1 个答案:

答案 0 :(得分:0)

您只需在fillna电话

后的最后添加pd.to_datetime
pd.to_datetime(df['dates'], errors='coerce').fillna(pd.to_datetime('2018-12-31'))
Out[217]: 
0   2018-02-12
1   2018-03-19
2   2018-12-24
3   2018-12-31
Name: dates, dtype: datetime64[ns]