python - Pandas read_csv 日期时间错误

标签 python pandas

我有一个具有以下格式的 CSV 文件 (aal_21_02_2018):

,Open,High,Low,Close,Volume
2018-02-21 08:01:00,1744.2,1746.0,1738.6,1738.6,34727
2018-02-21 08:02:00,1738.8,1743.0,1738.8,1740.0,6483
2018-02-21 08:03:00,1739.6,1739.6,1737.8,1738.2,6622

我想把这个文件变成一个DataFrame。当我运行以下方法时:

df = read_csv('aal_21_02_2018', index_col='datetime')

显示以下错误:

ValueError: Index datetime invalid

如何正确地将这个 CSV 文件解析为 DataFrame?

最佳答案

您有一个未命名的列,因此请传递序数位置

df = read_csv('aal_21_02_2018', index_col=0)

示例:

In[4]:
df = pd.read_csv(io.StringIO(t), index_col=0)
df

Out[4]: 
                       Open    High     Low   Close  Volume
2018-02-21 08:01:00  1744.2  1746.0  1738.6  1738.6   34727
2018-02-21 08:02:00  1738.8  1743.0  1738.8  1740.0    6483
2018-02-21 08:03:00  1739.6  1739.6  1737.8  1738.2    6622

如果您需要 datetimeIndex,则可以传递 parse_dates=[0]:

In[7]:
df = pd.read_csv(io.StringIO(t), index_col=0, parse_dates=[0])
df

Out[7]: 
                       Open    High     Low   Close  Volume
2018-02-21 08:01:00  1744.2  1746.0  1738.6  1738.6   34727
2018-02-21 08:02:00  1738.8  1743.0  1738.8  1740.0    6483
2018-02-21 08:03:00  1739.6  1739.6  1737.8  1738.2    6622

我们可以看到索引现在是一个 datetimeIndex:

In[8]:
df.index

Out[8]: 
DatetimeIndex(['2018-02-21 08:01:00', '2018-02-21 08:02:00',
               '2018-02-21 08:03:00'],
              dtype='datetime64[ns]', freq=None)

关于这是如何发生的,默认的 to_csv 行为是将索引输出为未命名列,如果您传递 index_label='datetime' 那么这将写出一个命名索引:

In[10]:
df.to_csv(index_label='datetime')

Out[10]: 'datetime,Open,High,Low,Close,Volume
2018-02-21 08:01:00,1744.2,1746.0,1738.6,1738.6,34727
2018-02-21 08:02:00,1738.8,1743.0,1738.8,1740.0,6483
2018-02-21 08:03:00,1739.6,1739.6,1737.8,1738.2,6622'

那么你的原始代码就会起作用:

In[12]:
pd.read_csv(io.StringIO(df.to_csv(index_label='datetime')), index_col='datetime')

Out[12]: 
                       Open    High     Low   Close  Volume
datetime                                                   
2018-02-21 08:01:00  1744.2  1746.0  1738.6  1738.6   34727
2018-02-21 08:02:00  1738.8  1743.0  1738.8  1740.0    6483
2018-02-21 08:03:00  1739.6  1739.6  1737.8  1738.2    6622

关于python - Pandas read_csv 日期时间错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48904194/

相关文章:

javascript - node.js 和 python 中相同问题解决方案的不同结果

python - 我可以过滤用户以要求在给定范围内的每个日期都匹配条目吗?

python - 类型错误 : list() takes at most 1 argument (3 given) for list class inheritance

python - Pandas 将数据框绘制为多个条形图

python - future 警告 : The default value of regex will change from True to False in a future version

python - 将 pandas 数据框列转换为嵌套的 python 字典

python - 查找百分比标记

python - Django 系统检查、迁移和测试在本地通过,但在 Docker CI/CD 环境中失败

python - 将分组结果计数到 pandas 中的单独列中

python - 删除重复项但保留对删除行的引用