jpp*_*jpp 11 python arrays datetime numpy pandas
这个问题的动机是对与in in 进行比较时提高绩效的问题的答案.DatetimeIndexpandas
解决方案将数据转换DatetimeIndex为numpy数组df.index.values,并将数组与np.datetime64对象进行比较.这似乎是从此比较中检索布尔数组的最有效方法.
其中一位开发人员对这个问题的反馈pandas是:"这些问题一般都不一样.提供一个numpy解决方案往往是一个特殊情况,不推荐."
我的问题是:
DatetimeIndex提供更多功能,但我只需要基本的功能,如切片和索引.numpy?在我的研究中,我发现一些帖子提到"并不总是兼容" - 但它们似乎都没有任何结论性的引用/文档,或者说明为什么/何时它们通常是不兼容的.许多其他帖子使用该numpy表示而没有评论.
chr*_*isb 10
在我看来,你应该总是喜欢使用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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1366 次 |
| 最近记录: |