pd.Timestamp 与 np.datetime64:它们可以互换用于选定的用途吗?

2023-11-27

这个问题的动机是一个答案 to a 关于提高绩效的问题进行比较时DatetimeIndex in pandas.

该解决方案将转换为DatetimeIndex to a numpy阵列通过df.index.values并将数组与np.datetime64目的。这似乎是从比较中检索布尔数组的最有效方法。

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

我的问题是:

  1. 它们对于操作的子集可以互换吗?我很欣赏DatetimeIndex提供更多功能,但我只需要基本功能,例如切片和索引。
  2. 是否有任何记录在案的差异result对于可转换为的操作numpy?

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

  • Pandas DatetimeIndex 索引 dtype:datetime64 与 Timestamp
  • 如何从 pandas.DatetimeIndex 转换为 numpy.datetime64?

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

numpy.datetime64本质上是一个薄包装纸int64。它几乎没有特定于日期/时间的功能。

pd.Timestamp是一个围绕 a 的包装numpy.datetime64。它由相同的 int64 值支持,但支持整个datetime.datetime界面,以及有用的 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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pd.Timestamp 与 np.datetime64:它们可以互换用于选定的用途吗? 的相关文章

随机推荐