当日期和时间位于不同的列中时,将数据从 csv 读取到 pandas 中

2023-12-19

我看了这个问题的答案:当 YYYYMMDD 和 HH 位于不同的列中时,在 Python 中使用 pandas 解析日期 https://stackoverflow.com/questions/11615504/parse-dates-when-yyyymmdd-and-hh-are-in-separate-columns-using-pandas-in-python,但它似乎对我不起作用,这让我觉得我做了一些微妙的错误。

我有 .csv 文件中的数据,我正在尝试使用 pandas read_csv 函数读取这些数据。日期和时间位于两个单独的列中,但我想将它们合并到一列“Datetime”中,其中包含日期时间对象。 csv 看起来像这样:

    Note about the data
    blank line
    Site Id,Date,Time,WTEQ.I-1...
    2069, 2008-01-19, 06:00, -99.9...
    2069, 2008-01-19, 07:00, -99.9...
    ...

我正在尝试使用这行代码来阅读它:

   read_csv("2069_ALL_YEAR=2008.csv", skiprows=2, parse_dates={"Datetime" : [1,2]}, date_parser=True, na_values=["-99.9"])

但是,当我将其写回 csv 时,它看起来完全相同(除了 -99.9s 更改为 NA,就像我使用 na_values 参数指定的那样)。日期和时间位于两个单独的列中。据我了解,这应该创建一个名为 Datetime 的新列,该列由第 1 列和第 2 列组成,并使用 date_parser 进行解析。我还尝试使用 parse_dates={"Datetime" : ["Date","Time"]}、parse_dates=[[1,2]] 和 parse_dates=[["Date", "Time"]]。我还尝试过使用 date_parser=parse,其中 parse 定义为:

    parse = lambda x: datetime.strptime(x, '%Y-%m-%d %H:%M')

这些都没有产生丝毫差异,这让我怀疑存在一些更深层次的问题。对它可能是什么有任何见解吗?


你应该更新你的 pandas,我推荐最新稳定版本 http://pandas.pydata.org/getpandas.html了解最新功能和错误修复。

这个具体功能是0.8.0 中引入 http://pandas.pydata.org/pandas-docs/version/0.8.0/whatsnew.html#other-new-features,适用于 pandas 版本 0.11:

In [11]: read_csv("2069_ALL_YEAR=2008.csv", skiprows=2, parse_dates={"Datetime" : [1,2]}, na_values=["-99.9"])
Out[11]:
             Datetime  Site Id  WTEQ.I-1
0 2008-01-19 06:00:00     2069       NaN
1 2008-01-19 07:00:00     2069       NaN

没有date_parser=True(因为这应该是一个解析函数,参见文档字符串 http://pandas.pydata.org/pandas-docs/stable/generated/pandas.io.parsers.read_csv.html).

请注意,在提供的示例中,生成的“Datetime”列是其自己的系列,而不是 DataFrame 的索引值。 如果您希望将日期时间值作为索引列而不是整数值,请传递指定所需列的 index_col 参数,在本例中为 0,因为生成的“Datetime”列是第一个列。

In [11]: read_csv("2069_ALL_YEAR=2008.csv", skiprows=2, parse_dates={"Datetime" : [1,2]}, index_col=0, na_values=["-99.9"])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当日期和时间位于不同的列中时,将数据从 csv 读取到 pandas 中 的相关文章

随机推荐