我认为这应该很容易,但我有点碰壁。我有一个从 Stata .dta 文件导入到 pandas 数据框中的数据集。有几列包含日期数据。数据框包含 100,000 多行,但给出了一个示例:
cat event_date total
0 G2 2006-03-08 16
1 G2 NaT NaN
2 G2 NaT NaN
3 G3 2006-03-10 16
4 G3 2006-08-04 12
5 G3 2006-12-28 13
6 G3 2007-05-25 10
7 G4 2006-03-10 13
8 G4 2006-08-06 19
9 G4 2006-12-30 16
数据存储为 datetime64 格式:
>>> mydata[['cat','event_date','total']].dtypes
cat object
event_date datetime64[ns]
total float64
dtype: object
我想做的就是创建一个新列,它给出 event_date 和开始日期之间的天数差异(而不是“我们”或“ns”!!!),比如 2006 年 1 月 1 日。我尝试了以下方法:
>>> mydata['new'] = mydata['event_date'] - np.datetime64('2006-01-01')
......但我得到了消息:
TypeError: ufunc 'isnan' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
我也尝试过 lambda 函数,但这也不起作用。
但是,如果我只想在可以成功使用的每个日期中添加一天:
>>> mydata['plusone'] = mydata['event_date'] + np.timedelta64(1,'D')
这很好用。
我在这里错过了一些简单的东西吗?
提前感谢您的帮助。