[央视新闻]Pandas to_datetime 函数和DataFrame apply 方法都可以将 DataFrame 列转换为Datetime日期时间,如何比较这两种方法的效率呢[每日推荐]

[央视新闻]Pandas to_datetime 函数和DataFrame apply 方法都可以将 DataFrame 列转换为Datetime日期时间,如何比较这两种方法的效率呢[每日推荐]

已邀请:
假设我有一个dataframe:
>>> from datetime import datetime, timedelta
>>> from pandas import DataFrame
>>> df = DataFrame.from_items(
[('Alfa', [1, 2, 3]),
('Bravo', [4, 5, 6]),
('Datetime', [datetime.strftime(datetime.now()-timedelta(days=_), "%m/%d/%Y, %H:%M:%S") for _ in range(3)])],
orient='index',
columns=['A', 'B', 'C']).T
>>> df
Alfa Bravo Datetime
A 1 4 12/07/2019, 14:08:55
B 2 5 12/06/2019, 14:08:55
C 3 6 12/05/2019, 14:08:55

我们可以使用 timeit 来比较本文介绍的两种方法的时间性能。

In [1]: %timeit pd.to_datetime(df['Datetime'], format="%m/%d/%Y, %H:%M:%S")
452 µs ± 85.3 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [2]: %timeit df['Datetime'].apply(lambda _: datetime.strptime(_,"%m/%d/%Y, %H:%M:%S"))
377 µs ± 58.5 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
apply 方法甚至比 Pandas 原生的 to_datetime 方法稍好一点,其执行时间约为 to_datetime 函数的 80%。

要回复问题请先登录注册