【发布时间】:2013-07-03 19:05:15
【问题描述】:
我看了这个问题的答案:Parse dates when YYYYMMDD and HH are in separate columns using pandas in Python,但它似乎对我不起作用,这让我觉得我做错了什么。
我有 .csv 文件中的数据,我正在尝试使用 pandas read_csv 函数读取这些数据。日期和时间位于两个单独的列中,但我想将它们合并为一列“日期时间”,其中包含日期时间对象。 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')
这些都没有产生任何影响,这让我怀疑存在一些更深层次的问题。了解它可能是什么?
【问题讨论】:
-
您的示例数据对我有用。不过,我不得不取出 date_parser=True 位。
-
哎呀,现在我看看这个,我想你的方法应该也可以,你使用的是哪个 pandas 版本?
-
很高兴我并没有因为认为它看起来正确而疯狂:)。我在 Linux Mint 13 MATE 版本上使用 pandas 版本 0.7.0-1。
-
@dooz - 我试着把那部分拿出来,但它仍然不起作用......奇怪。它一定是我的设置所特有的。
-
最新稳定版是0.11,一定要更新! (我编辑了我的答案以反映这一点。)
标签: python datetime csv pandas