pandas.to_datetime
чрезвычайно медленно (в некоторых случаях), когда требуется автоматический анализ дат.Поскольку кажется, что вы знаете форматы, вы должны явно передать их параметру format
, что значительно улучшит скорость.
Вот пример:
import pandas as pd
df1 = pd.DataFrame({'Timestamp': ['2018-09-24 15:38:06']*10**5})
df2 = pd.DataFrame({'Timestamp': ['2018-09-24 03:38:06 PM']*10**5})
%timeit pd.to_datetime(df1.Timestamp)
#21 ms ± 50.4 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
%timeit pd.to_datetime(df2.Timestamp)
#14.3 s ± 122 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
Это в 700 раз медленнее.Теперь укажите формат явно:
%timeit pd.to_datetime(df2.Timestamp, format='%Y-%m-%d %I:%M:%S %p')
#384 ms ± 1.9 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
pandas
все еще анализирует второй формат даты медленнее, но это не так плохо, как это было раньше.