首页 > 解决方案 > 将默认日期时间对象值赋予 pandas.to_datetime()

问题描述

我有一些不同格式的字符串日期,我使用to_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

方法:

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

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?如果没有,我如何在之后设置默认日期?

标签: python-3.xpandasdatetime

解决方案


您只需要在通话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]

推荐阅读