如何加快这个UTC转换过程?

问题描述 投票:0回答:1

我想将Datetime的范围转换为UTC时区。对于500_000个条目,以下代码需要三分钟以上的时间。

我如何加快此过程?

import datetime
from pytz import timezone
import pytz
import pandas as pd
import time
abc = pd.date_range(start='2020-03-28 05:00:00', periods=500_000, freq='5min')
UTC = pytz.timezone('UTC')
BERLIN = pytz.timezone('Europe/Berlin')

print("abc[0]=\n", abc[0])
print("abc[-1]=\n", abc[-1])

myList = []
my_time = time.time()
for runner in abc:
    localizedToBerlin = BERLIN.localize(runner)
    localizedToBerlinAsUtc = localizedToBerlin.astimezone(UTC)
    myList.append([runner, localizedToBerlinAsUtc])
print('runtime:', time.time() - my_time)

结果:

abc[0]=
 2020-03-28 05:00:00
abc[-1]=
 2024-12-28 07:35:00
runtime: 209.57262253761292
python datetime timezone utc pytz
1个回答
0
投票

[尝试避免循环并使用pandas内置函数,例如tz_convert。从欧洲/柏林到UTC:

import pandas as pd
dr_ber = pd.date_range(start='2020-03-28 05:00:00', periods=500_000, freq='5min',
                    tz='Europe/Berlin')

%timeit dr_ber.tz_convert('UTC')
77.2 µs ± 1.4 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
© www.soinside.com 2019 - 2024. All rights reserved.