gpt4 book ai didi

python - 两种不同格式的 pd.to_datetime 的速度差异

转载 作者:行者123 更新时间:2023-12-01 05:11:38 24 4
gpt4 key购买 nike

我的数据框中有 2 个不同的日期列,我想将它们转换为 datetime64。

其中一个具有格式

0    2009-03-09

并且转换得相当快:

%timeit pd.to_datetime(df.acquisition_date)
10000 loops, best of 3: 97.9 µs per loop

另一个具有以下格式:

0    2013-01-07 01:02:38 UTC

其转换大约需要。长 18 倍:

%timeit pd.to_datetime(df.created_at)
1000 loops, best of 3: 1.74 ms per loop

我可以做什么来加快速度?

编辑:建议的一些结果(df.created_atslow 格式):

%timeit pd.to_datetime(df.acquisition_date)
%timeit pd.to_datetime(df.created_at)
%timeit pd.to_datetime(df.created_at, infer_datetime_format=True)
%timeit pd.to_datetime(df.created_at, format='%Y-%m-%d %H:%M:%S %Z')
10000 loops, best of 3: 98.5 µs per loop
1000 loops, best of 3: 1.73 ms per loop
1000 loops, best of 3: 955 µs per loop
1000 loops, best of 3: 222 µs per loop

最佳答案

尽可能明确地表达出来。

 > dates = pd.Series(['2013-01-07 01:02:38 UTC']*100000)
> %timeit pd.to_datetime(dates)
^C
> %timeit pd.to_datetime(dates, format='%Y-%m-%d %H:%M:%S %Z')
1 loops, best of 3: 570 ms per loop

奇怪的是,这似乎伤害了其他种类。

> dates = pd.Series(['2009-03-09']*100000)
> %timeit pd.to_datetime(dates)
10 loops, best of 3: 22.2 ms per loop
> %timeit pd.to_datetime(dates, format='%Y-%m-%d')
1 loops, best of 3: 342 ms per loop

请注意,长格式时间戳的首选形式可以让我们加快速度:

> dates = pd.Series(['2013-01-07T01:02:38Z']*100000)
> %timeit pd.to_datetime(dates)
10 loops, best of 3: 23.1 ms per loop

关于python - 两种不同格式的 pd.to_datetime 的速度差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24112729/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com