python - 在 Python 和 Pandas 中使用 dd.mm.yyyy 读取 csv

标签 python csv pandas date-parsing

我正在读取德语日期格式的 csv 文件。 似乎它在这篇文章中工作正常:

Picking dates from an imported CSV with pandas/python

但是,就我而言,日期似乎无法识别。 我在测试文件中找不到任何错误的字符串。

import pandas as pd
import numpy as np


%matplotlib inline
import matplotlib.pyplot as plt

from matplotlib import style
from pandas import DataFrame

style.use('ggplot')

df = pd.read_csv('testdata.csv', dayfirst=True, parse_dates=True)
df[:5]

table

这导致:

screenshot

因此,带有日期的列不被识别。 我在这里做错了什么? 还是这种日期格式根本不兼容?

  • 操作系统 10.10.3
  • python conda 3.13.0
  • python 3.4.3-0
  • iPython 笔记本 3.1.0

最佳答案

如果您使用 parse_dates=True,则 read_csv 会尝试 parse the index as a date . 因此,您还需要使用 index_col=[0] 将第一列声明为索引:

In [216]: pd.read_csv('testdata.csv', dayfirst=True, parse_dates=True, index_col=[0])
Out[216]: 
            morgens  mittags  abends
Datum                               
2015-03-16      382      452     202
2015-03-17      288      467     192

或者,如果您不希望 Datum 列成为索引,您可以使用 parse_dates=[0] 明确告诉 read_csv 将第一列解析为日期:

In [217]: pd.read_csv('testdata.csv', dayfirst=True, parse_dates=[0])
Out[217]: 
       Datum  morgens  mittags  abends
0 2015-03-16      382      452     202
1 2015-03-17      288      467     192

在引擎盖下 read_csv 使用 dateutil.parser.parse 来解析日期字符串:

In [218]: import dateutil.parser as DP

In [221]: DP.parse('16.03.2015', dayfirst=True)
Out[221]: datetime.datetime(2015, 3, 16, 0, 0)

由于 dateutil.parser 可以毫无问题地解析 DD.MM.YYYY 格式的日期字符串,因此您不必在此处声明自定义日期解析器。

关于python - 在 Python 和 Pandas 中使用 dd.mm.yyyy 读取 csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30833133/

相关文章:

python - 放置一个颜色条 matplotlib

python - 显示列表的所有可能分组,仅给出子列表的数量(长度可变)

python - 从 Ubuntu 运行 Odoo 应用程序

csv - 下载 CSV 文件 (UTF 8) 编码 ServiceStack

python - 程序卡在 Tensorflow 1.6 中的 Estimator.evaluate 上

python - 从 Pandas 字典列表中删除多级列

python - 如何运行 test/a.py 形式的单元测试?

python - Pandas - 将大数据框切成 block

python - 每行比较两列 Pandas 行

c# - 将字符串转换为 DateTime 格式问题 C#