一个简单的解决方案涉及 Series 构造函数。您可以简单地将数据类型传递给dtype
参数。此外,该to_datetime
函数现在可以采用一系列字符串。
创建数据
date_strings = ('2008-12-20','2008-12-21','2008-12-22','2008-12-23')
所有三个产生相同的东西
pd.Series(date_strings, dtype='datetime64[ns]')
pd.Series(pd.to_datetime(date_strings))
pd.to_datetime(pd.Series(date_strings))
基准
@waitingkuo 提供的基准测试是错误的。第一种方法比其他两种方法慢一点,它们具有相同的性能。
import datetime as dt
dates = [(dt.datetime(1960, 1, 1)+dt.timedelta(days=i)).date().isoformat()
for i in range(20000)] * 100
%timeit pd.Series(dates, dtype='datetime64[ns]')
730 ms ± 9.06 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
%timeit pd.Series(pd.to_datetime(dates))
426 ms ± 3.45 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
%timeit pd.to_datetime(pd.Series(dates))
430 ms ± 5.7 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)