代码之家  ›  专栏  ›  技术社区  ›  dumbledad

为什么简单数组函数中的数据类型从int64更改为float64[[副本]

  •  0
  • dumbledad  · 技术社区  · 6 年前

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

    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

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

    1 回复  |  直到 6 年前
        1
  •  2
  •   piRSquared    6 年前

    通过移位,在序列的末尾引入了一个空点。充满了 np.nan . 不幸的是, np.int64 没有与相同的空对象 np.float64

    用零填充

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

    备选方案2

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