【问题标题】:Why is dtype being changed in simple pandas array function from int64 to float64? [duplicate]为什么简单的 pandas 数组函数中的 dtype 从 int64 更改为 float64? [复制]
【发布时间】:2018-09-20 22:44:46
【问题描述】:

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

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

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

【问题讨论】:

  • 因为NaN是设计float,所以它是由shift创建的

标签: pandas


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    • 1970-01-01
    • 2013-01-06
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多