我的数据集中有一个列,它表示一个以ms为单位的日期,有时它的值是nan (实际上我的列的类型是str,有时它的值是'nan')。我想要计算本专栏的天数。问题是,当做两个日期的差异时:
(pd.to_datetime('now') - pd.to_datetime(np.nan)).days如果是nan,它将被转换为NaT,区别在于类型为NaTType,该类型没有days属性。
在我的例子中,我希望使用nan作为结果。
我尝试过的其他方法:不能使用np.datetime64,因为它不能作为参数nan。我的数据无法转换为int,因为int没有nan。
发布于 2015-08-28 19:13:58
即使你先过滤,它也能正常工作:
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发布于 2017-09-21 04:28:30
对我来说,从pandas 0.19.2升级到pandas 0.20.3有助于解决这个错误。
pip install --upgrade pandashttps://stackoverflow.com/questions/32269676
复制相似问题