当日期和时间在单独的列中时,将csv中的数据读入Pandas

2024-06-02 04:29:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我看了看这个问题的答案:Parse dates when YYYYMMDD and HH are in separate columns using pandas in Python,但它似乎对我不起作用,这让我觉得我做错了一些微妙的事情。

我在.csv文件中有数据,我正试图使用pandas read_csv函数读取这些数据。日期和时间在两个单独的列中,但我想将它们合并成一个列“Date time”,其中包含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_解析器进行解析。我也尝试过使用parse戋dates={“Date Time”:[“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')

这些都没有起到一点作用,这让我怀疑有更深层次的问题。有什么发现吗?


Tags: csv数据inparserpandasreaddatetimedate
1条回答
网友
1楼 · 发布于 2024-06-02 04:29:31

你应该更新你的熊猫,我推荐latest stable version为最新的功能和错误修复。

这个特定功能是introduced in 0.8.0,在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(因为这应该是一个解析函数,请参见docstring)。

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

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

相关问题 更多 >