我在字符串中有一些日期,使用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?如果没有,我如何在之后设置默认日期?
答案 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]