从yyyyMMdd int列表中最有效地构造pandas.DateTimeIndex

时间:2018-04-24 08:43:19

标签: python pandas

pandas.DateTimeIndex支持多种输入格式;但是,大多数人严重依赖于解析包含日期/日期时间信息的字符串,这些信息对于大型数据集来说效率低下。如果构建DateTimeIndex的起点是yyyyMMdd格式的int列表,那么构建DateTimeIndex的最有效方法是什么?以下转换工作;但是,它依赖于从字符串中解析日期而效率非常低。

import pandas
dates = [20180401, 20180402, 20180403]
dti = pandas.DatetimeIndex(map(str, dates)

1 个答案:

答案 0 :(得分:2)

使用to_datetime参数format

dti = pd.to_datetime(dates, format='%Y%m%d')
print (dti)

DatetimeIndex(['2018-04-01', '2018-04-02', '2018-04-03'], dtype='datetime64[ns]', freq=None)

如果输入数据为csv,请在read_csv中使用参数parse_dates

import pandas as pd

temp=u"""Date
20180401
20180402
20180403"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(pd.compat.StringIO(temp), parse_dates=[0])

print (df)
        Date
0 2018-04-01
1 2018-04-02
2 2018-04-03

print (df.dtypes)
Date    datetime64[ns]
dtype: object