首页 > 解决方案 > 为什么简单的 pandas 数组函数中的 dtype 从 int64 更改为 float64?

问题描述

我有一个熊猫数据框。如果我通过编写检查日期列的数据类型

analytic_events.date.dtype

我得到结果

dtype('int64')

然而,如果我运行这个简单的数组函数(它从下一行的日期列返回值),类型就会改变

def duration(analytic_event):
    return analytic_event.date.shift(-1)
duration(analytic_events)

因此:

Name: date, Length: 3373668, dtype: float64

为什么这个简单的函数不保留列的类型,我将如何重写它来做到这一点?

标签: pandas

解决方案


通过移位,您在系列末尾引入了一个空点。那得到填充np.nan。不幸的是,np.int64没有与np.float64.

备选方案 1

用零填充

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

备选方案 2

末日斩

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

推荐阅读