pandas.DateTimeIndex
支持多种输入格式;但是,大多数人严重依赖于解析包含日期/日期时间信息的字符串,这些信息对于大型数据集来说效率低下。如果构建DateTimeIndex
的起点是yyyyMMdd格式的int
列表,那么构建DateTimeIndex
的最有效方法是什么?以下转换工作;但是,它依赖于从字符串中解析日期而效率非常低。
import pandas
dates = [20180401, 20180402, 20180403]
dti = pandas.DatetimeIndex(map(str, dates)
答案 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