pd.Timestamp与np.datetime64:它们可以互换使用吗?

发布于 2021-01-29 19:36:21

这个问题是由对与in进行比较时提高性能的问题的答案引起的。DatetimeIndex``pandas

该解决方案通过将转换DatetimeIndexnumpy数组,df.index.values然后将该数组与np.datetime64对象进行比较。这似乎是从此比较中检索布尔数组的最有效方法。

一位开发人员对此问题的反馈pandas是:“一般而言,这些都不相同。提供一个numpy解决方案通常是特例,不建议这样做。”

我的问题是:

  1. 它们可以互换一部分操作吗?我赞赏 DatetimeIndex提供了更多功能,但我只需要切片和索引等基本功能。
  2. 可转换为的运算的 结果 是否有任何记载的差异numpy

在我的研究中,我发现一些帖子提到“并非始终兼容”-但似乎都没有结论性的参考文件/文档,也没有说明为什么/通常不兼容的原因。许多其他帖子使用该numpy表示形式而没有评论。

关注者
0
被浏览
49
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

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

    pd.Timestamp是包装纸的包装纸numpy.datetime64。它由相同的int64值支持,但支持整个datetime.datetime接口以及有用的特定于熊猫的功能。

    这两个的数组内表示是相同的-它是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)
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看