Укажите format
или infer_datetime_format
, чтобы увидеть значительное повышение производительности:
df = pd.concat([df]*10000)
%timeit pd.to_datetime(df['date']) # 12.5 s per loop
%timeit pd.to_datetime(df['date'], format='%m/%d/%Y') # 252 ms per loop
%timeit pd.to_datetime(df['date'], infer_datetime_format=True) # 228 ms per loop
Предварительное сообщение Pandas о том, что вы ожидаете, обычно является хорошим способом повышения производительности.Так что эта идея будет работать и с pd.read_csv
, если вы читаете из входного файла.
Вероятно, ваша ошибка связана с плохими данными.Если вы хотите вернуть NaT
для неконвертируемых значений, укажите errors='coerce'
:
pd.to_datetime(df['date'], format='%m/%d/%Y', errors='coerce')