我有一个pandas数据框,其中包含按分钟计算的外汇数据,长达一年(371635行):
O H L C
0
2017-01-02 02:00:00 1.05155 1.05197 1.05155 1.05190
2017-01-02 02:01:00 1.05209 1.05209 1.05177 1.05179
2017-01-02 02:02:00 1.05177 1.05198 1.05177 1.05178
2017-01-02 02:03:00 1.05188 1.05200 1.05188 1.05200
2017-01-02 02:04:00 1.05196 1.05204 1.05196 1.05203
我想过滤每日数据以获得小时范围:
^{pr2}$如果我用200天做一个for
循环,则需要几分钟。我怀疑这条线每走一步
df_day = df1[df.index.date == dt.date()]
正在寻找与数据集中每一行的相等性(即使它是一个有序的数据集)。
有什么方法可以加快筛选速度,还是应该从一月到十二月执行一些旧的命令for
循环。。。?在
避免使用Python
datetime
首先,您应该避免将Python}。此处的性能问题部分是由于docs中描述的这种行为造成的:
datetime
与Pandas操作相结合。有许多Pandas/numy友好的方法来创建datetime
对象以进行比较,例如pd.Timestamp
和{以这种方式使用
object
dtype消除了向量化的好处,因为操作需要Python级别的循环。在使用
groupby
操作按日期聚合熊猫已经具有通过标准化时间按日期分组的功能:
另一个例子是,您可以通过以下方式访问特定日期的切片:
^{pr2}$相关问题 更多 >
编程相关推荐