pandas.DateTimeIndex
支持多种输入格式;然而,大多数都严重依赖于解析包含日期/日期时间信息的字符串,这对于大型数据集可能效率低下。如果构建 DateTimeIndex
的起点是格式为 yyyyMMdd 的 int
列表,那么构建 DateTimeIndex
最有效的方法是什么?以下转换有效;然而,它的效率很低,因为它依赖于字符串的日期解析。
import pandas
dates = [20180401, 20180402, 20180403]
dti = pandas.DatetimeIndex(map(str, dates)
最佳答案
使用to_datetime
带参数格式
:
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
关于python - 从 yyyyMMdd int 列表中最有效地构建 pandas.DateTimeIndex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49997133/