我有一个熊猫数据框。如果我通过写
来检查日期列的数据类型analytic_events.date.dtype
我得到结果
dtype('int64')
但是,如果我运行此简单的数组函数(该函数从下一行的date列返回值),类型就会更改
def duration(analytic_event):
return analytic_event.date.shift(-1)
duration(analytic_events)
因此:
Name: date, Length: 3373668, dtype: float64
为什么这个简单的函数不能保留列的类型,我该如何重写呢?
答案 0 :(得分:2)
通过移动,您在系列结尾处引入了一个空白点。 np.nan
填充了该内容。不幸的是,np.int64
没有与np.float64
等效的null对象。
填充零
analytic_event.date.shift(-1).fillna(0, downcast='infer')
最后一幕
pd.Series(analytic_event.date.values[1:], analytic_event.index[:-1], name='date')