python - 在Python中为大型数据集本地化时间的快速方法?

标签 python pandas numpy datetime

我有日期时间对象作为 pandas 数据框中的索引,我想在不使用 for 循环的情况下对其进行本地化。这是代码:(数据是数据框)

from pytz import timezone
utc = timezone('UTC')
utc_times = [utc.localize(entry) for entry in data.index]
cst_times = [entry.astimezone(timezone('US/Central')) for entry in utc_times]
data.index = cst_times

随着数据集的增长,速度会变慢。有什么办法可以加快速度吗?

最佳答案

如果您的索引是 DateTimeIndex,您应该能够执行以下操作:

import pandas as pd
times = pd.DatetimeIndex(start='2018-04-26 11:00:00', periods=50000, freq='1h')
data = pd.DataFrame(index=times)
utc_times = data.index.tz_localize('UTC')
cst_times = utc_times.tz_convert('US/Central')
data.index = cst_times

对于 50,000 倍的索引,此方法的速度快了 1000 倍以上。见下文:

%% time
# Original method
utc_times = [utc.localize(entry) for entry in data.index]
cst_times = [entry.astimezone(timezone('US/Central')) for entry in utc_times]
data.index = cst_times

CPU times: user 1.28 s, sys: 38.2 ms, total: 1.32 s
Wall time: 1.49 s

--

%%time
# New method
utc_times = data.index.tz_localize('UTC')
cst_times = utc_times.tz_convert('US/Central')
data.index = cst_times

CPU times: user 354 µs, sys: 9 µs, total: 363 µs
Wall time: 389 µs

关于python - 在Python中为大型数据集本地化时间的快速方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50067808/

相关文章:

python - numpy:将图像形状从 224 x 224 x 3 更改为 3 x 224 x 224 的最快方法

python - 如何在不删除 QListWidget 项进行编辑和添加的情况下编辑它?

python - 查找两个列表之间差异的快速方法,适用于所有情况

python - 如何应用以调用者作为参数的函数

python - 了解 tensorflow 占位符的形状

python - 安装 Python 2.7 和 Python 3.5 后,使用 IDLE 编辑选项不可用。应该做什么?

python - Pandas 排序多索引和重置

python - 使用 chunksize 的缺失记录 - Pandas 和 Google Analytics API 集成

python - Python数据框中的置信区间

python - 从数组及其转置创建邻接矩阵