python - pd.Timestamp 与 np.datetime64 : are they interchangeable for selected uses?

标签 python arrays pandas numpy datetime

这个问题的动机是 an answerquestion on improving performancepandas 中与 DatetimeIndex 进行比较时。

该解决方案通过 df.index.valuesDatetimeIndex 转换为 numpy 数组,并将该数组与 np. datetime64 对象。这似乎是从此比较中检索 bool 数组的最有效方法。

pandas 的一位开发人员对这个问题的反馈是:“这些通常不一样。提供 numpy 解决方案通常是一种特殊情况,不推荐使用。”

我的问题是:

  1. 对于一部分操作,它们是否可以互换?我很感激 DatetimeIndex 提供了更多功能,但我只需要基本功能,例如切片和索引。
  2. 对于可转换为 numpy 的操作,结果 是否有任何记录在案的差异?

在我的研究中,我发现一些帖子提到“并不总是兼容”——但它们似乎都没有任何决定性的引用资料/文档,或具体说明为什么/何时通常它们不兼容。许多其他帖子使用 numpy 表示而不加评论。

最佳答案

在我看来,您应该始终更喜欢使用 Timestamp - 它可以在需要的情况下轻松转换回 numpy 日期时间。

numpy.datetime64 本质上是 int64 的精简包装器。它几乎没有特定于日期/时间的功能。

pd.Timestampnumpy.datetime64 的包装器。它由相同的 int64 值支持,但支持整个 datetime.datetime 接口(interface),以及有用的 pandas 特定功能。

这两个的数组内表示是相同的——它是一个连续的 int64 数组。 pd.Timestamp 是一个标量框,可以更轻松地处理各个值。

回到链接的答案,你可以这样写,它更短但恰好更快。

%timeit (df.index.values >= pd.Timestamp('2011-01-02').to_datetime64()) & \
        (df.index.values < pd.Timestamp('2011-01-03').to_datetime64())
192 µs ± 6.78 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

关于python - pd.Timestamp 与 np.datetime64 : are they interchangeable for selected uses?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49757871/

相关文章:

arrays - 在两个元素的数组中拆分大数组

javascript - 使用子字符串更改数组元素值

python - 将多个测量值合并到 pandas 数据框中

python - pandas 中的项目总和并写入文件

python - 如何使用 pySpark Databricks 从 BinaryType 中提取列?

javascript - 未选中时,将对象作为绑定(bind)到数组属性的值的 VueJS 复选框不会脱离数组

python - 从列表中删除无法转换为集合的重复项

Python:消除额外的逗号(错误标记数据。C 错误:第 29 行中预期有 3 个字段,看到了 4)

python - 通过 Gensim 查找未见文档的主题

python - 组中对象之间的 Pygame 碰撞检测