Pandas 为什么简单数组函数中的数据类型从int64更改为float64?

Pandas 为什么简单数组函数中的数据类型从int64更改为float64?,pandas,Pandas,我有一个熊猫数据框。如果我通过写入检查日期列的数据类型 analysis\u events.date.dtype 我得到了结果 dtype('int64') 但是,如果我运行这个简单的数组函数(它从下一行的date列返回值),类型就会改变 def持续时间(分析事件): 返回事件日期移位(-1) 持续时间(分析性事件) 因此: 名称:日期,长度:3373668,数据类型:float64 为什么这个简单的函数不保留列的类型?我该如何重写它才能做到这一点?通过移位,您在系列的末尾引入了一个空点。该

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

analysis\u events.date.dtype
我得到了结果

dtype('int64')

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

def持续时间(分析事件):
返回事件日期移位(-1)
持续时间(分析性事件)
因此:

名称:日期,长度:3373668,数据类型:float64


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

通过移位,您在系列的末尾引入了一个空点。该get用
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')

通过移位,您在系列末尾引入了一个空点。该get用
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')

因为
NaN
是be design
float
,所以它是由
shift
创建的。因为
NaN
是be design
float
,所以它是由
shift
创建的