有比pd.to_datetime更快的日期转换吗?
Is there a faster date conversion than pd.to_datetime?
我正在尝试将格式为 01/01/2017 的 pandas 数据框中的日期转换为 python 格式,以便提取星期几。
我一直在使用:
df['Date'] = pd.to_datetime(df['Date'])
df['DOW'] = df['Date'].dt.weekday_name
但第一行大约需要 250 微秒,我有超过 100 万个日期要转换。
有更快的方法吗?
因为您知道格式是什么,所以为 pd.to_datetime
添加 format
参数将使它快 40 倍。
pd.to_datetime(df['Date'], format='%d/%m/%Y')
对我来说大约需要 4 秒
此外,它有点老套,但如果您知道可能日期的上限和下限,则可以使用所有可能字符串的映射来连接数据:
dates = pd.date_range(pd.Timestamp.min, pd.Timestamp.max)
date_mappings = pd.Series(dates, index=dates.strftime('%d/%m/%Y'), name='Date')
df = df.join(date_mappings, on='Date', lsuffix='_str')
这在我的计算机上花费了不到 1 秒,如果您知道可能日期的界限,可能会进一步减少
我正在尝试将格式为 01/01/2017 的 pandas 数据框中的日期转换为 python 格式,以便提取星期几。 我一直在使用:
df['Date'] = pd.to_datetime(df['Date'])
df['DOW'] = df['Date'].dt.weekday_name
但第一行大约需要 250 微秒,我有超过 100 万个日期要转换。
有更快的方法吗?
因为您知道格式是什么,所以为 pd.to_datetime
添加 format
参数将使它快 40 倍。
pd.to_datetime(df['Date'], format='%d/%m/%Y')
对我来说大约需要 4 秒
此外,它有点老套,但如果您知道可能日期的上限和下限,则可以使用所有可能字符串的映射来连接数据:
dates = pd.date_range(pd.Timestamp.min, pd.Timestamp.max)
date_mappings = pd.Series(dates, index=dates.strftime('%d/%m/%Y'), name='Date')
df = df.join(date_mappings, on='Date', lsuffix='_str')
这在我的计算机上花费了不到 1 秒,如果您知道可能日期的界限,可能会进一步减少