为什么在简单的熊猫数组函数中将dtype从int64更改为float64?

时间:2018-09-20 14:37:01

标签: pandas

我有一个熊猫数据框。如果我通过写

来检查日期列的数据类型
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

为什么这个简单的函数不能保留列的类型,我该如何重写呢?

1 个答案:

答案 0 :(得分:2)

通过移动,您在系列结尾处引入了一个空白点。 np.nan填充了该内容。不幸的是,np.int64没有与np.float64等效的null对象。

替代1

填充零

analytic_event.date.shift(-1).fillna(0, downcast='infer')

替代2

最后一幕

pd.Series(analytic_event.date.values[1:], analytic_event.index[:-1], name='date')