python - 从 yyyyMMdd int 列表中最有效地构建 pandas.DateTimeIndex

标签 python pandas

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/

相关文章:

python - 类型错误 : Could not compare <type 'str' > type with Series

python - 在 python 中定位(文件/行)构造函数的调用

python - 对用户输入字符串使用 numba.jit

python - 计算 numpy 数组中一行中重复元素的数量

python - 从 dict 以列表作为值创建 DataFrame

python - Pandas:迭代并插入具有组内条件的列复杂问题

python - Pandas read_csv() 对我不起作用

python - 当为另一列指定一个条件时如何填充前向值?

python - Cython Memoryview 作为返回值

python - 在 Python 中实现二叉搜索树来处理重复键