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

2023-12-30

我正在读取德国日期格式的 csv 文件。 看起来在这篇文章中效果很好:

使用 pandas/python 从导入的 CSV 中选择日期 https://stackoverflow.com/questions/28025671/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]

这导致:

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

  • 操作系统 10.10.3
  • 蟒蛇康达 3.13.0
  • Python 3.4.3-0
  • iPython 笔记本 3.1.0

如果你使用parse_dates=True then read_csv尝试解析index作为约会 http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html。 因此,您还需要将第一列声明为索引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 uses 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)

Since dateutil.parser解析日期字符串没有问题DD.MM.YYYY格式,您不必在此处声明自定义日期解析器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Python 和 Pandas 中使用 dd.mm.yyyy 读取 csv 的相关文章

随机推荐