我有一个带有多个列的数据框,我想使用toordinal方法将其转换为整数,但是有一些缺少的日期,我想知道如何管理它们以便进行转换。
我尝试过这个:
dates['date'].apply(lambda x: x.toordinal())
我有错误:
ValueError: NaTType does not support toordinal
答案 0 :(得分:3)
另一个选择是
dates['date'].apply(lambda x: x.toordinal() if pd.notna(x) else 0)
答案 1 :(得分:2)
您可以使用datetime
模块。请注意,NaT
由1
转换为datetime.toordinal
。如果需要,可以将其替换为您选择的值,作为一个单独的步骤。
来自@jezrael的数据。
from datetime import datetime
rng = pd.date_range('2017-04-03', periods=5)
dates = pd.DataFrame({'date': rng})
dates.loc[6, 'date'] = np.nan
dates['date_ordinal'] = dates['date'].apply(datetime.toordinal)
print(dates)
date date_ordinal
0 2017-04-03 736422
1 2017-04-04 736423
2 2017-04-05 736424
3 2017-04-06 736425
4 2017-04-07 736426
6 NaT 1