'NaTType' 对象没有属性 'days'
'NaTType' object has no attribute 'days'
我的数据集中有一列表示以毫秒为单位的日期,有时它的值是 nan
(实际上我的列是 str
类型,有时它的值是 'nan'
).我想计算本专栏的天数。问题是在计算两个日期的差值时:
(pd.to_datetime('now') - pd.to_datetime(np.nan)).days
如果一个是 nan
它被转换为 NaT
并且差异是类型 NaTType
没有属性 days
.
就我而言,我希望得到 nan
作为结果。
我尝试过的其他方法:np.datetime64
不能使用,因为它不能作为参数 nan
。我的数据无法转换为 int
,因为 int
没有 nan
.
即使你先过滤它也会起作用:
In [201]:
df = pd.DataFrame({'date':[dt.datetime.now(), pd.NaT, dt.datetime(2015,1,1)]})
df
Out[201]:
date
0 2015-08-28 12:12:12.851729
1 NaT
2 2015-01-01 00:00:00.000000
In [203]:
df.loc[df['date'].notnull(), 'days'] = (pd.to_datetime('now') - df['date']).dt.days
df
Out[203]:
date days
0 2015-08-28 12:12:12.851729 -1
1 NaT NaN
2 2015-01-01 00:00:00.000000 239
我从 pandas 0.19.2 升级到 pandas 0.20.3 帮助解决了这个错误。
pip install --upgrade pandas
我的数据集中有一列表示以毫秒为单位的日期,有时它的值是 nan
(实际上我的列是 str
类型,有时它的值是 'nan'
).我想计算本专栏的天数。问题是在计算两个日期的差值时:
(pd.to_datetime('now') - pd.to_datetime(np.nan)).days
如果一个是 nan
它被转换为 NaT
并且差异是类型 NaTType
没有属性 days
.
就我而言,我希望得到 nan
作为结果。
我尝试过的其他方法:np.datetime64
不能使用,因为它不能作为参数 nan
。我的数据无法转换为 int
,因为 int
没有 nan
.
即使你先过滤它也会起作用:
In [201]:
df = pd.DataFrame({'date':[dt.datetime.now(), pd.NaT, dt.datetime(2015,1,1)]})
df
Out[201]:
date
0 2015-08-28 12:12:12.851729
1 NaT
2 2015-01-01 00:00:00.000000
In [203]:
df.loc[df['date'].notnull(), 'days'] = (pd.to_datetime('now') - df['date']).dt.days
df
Out[203]:
date days
0 2015-08-28 12:12:12.851729 -1
1 NaT NaN
2 2015-01-01 00:00:00.000000 239
我从 pandas 0.19.2 升级到 pandas 0.20.3 帮助解决了这个错误。
pip install --upgrade pandas