微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

读取文件时Python熊猫中的日期解析错误

提问至:Python pandas for reading in file with date

我无法解析以下数据框上的日期.代码如下:

df = pandas.read_csv(file_name, skiprows = 2, index_col='datetime', 
                 parse_dates={'datetime': [0,1,2]}, delim_whitespace=True,
                 date_parser=lambda x: pandas.datetime.strptime(x, '%Y %m %d'))
         OTH-000.opc
              XKN1=    0.500000E-01
    Y   M   D     PRCP     VWC1    
 2006   1   1      0.0  0.17608E+00
 2006   1   2      6.0  0.21377E+00
 2006   1   3      0.1  0.22291E+00
 2006   1   4      3.0  0.23460E+00
 2006   1   5      6.7  0.26076E+00

我收到一条错误消息:lambda()正好接受1个参数(给定3个)

根据以下@EdChum的评论,如果我使用此代码

df = pandas.read_csv(file_name, skiprows = 2, index_col='datetime', parse_dates={'datetime': [0,1,2]}, delim_whitespace=True))

df.index生成一个对象,而不是日期时间序列

df.index
Index([u'2006 1 1',u'2006 1 2'....,u'nan nan nan'],dtype='object')

最后,文件在这里可用:

https://www.dropbox.com/s/0xgk2w4ed9mi4lx/test.txt?dl=0

解决方法:

好的,我看到了问题,您的文件末尾有多余的空行,不幸的是,这在寻找空白时将解析器弄乱了,这导致df看起来如下:

Out[25]:
             PRCP     VWC1
datetime                  
2006 1 1      0.0  0.17608
2006 1 2      6.0  0.21377
2006 1 3      0.1  0.22291
2006 1 4      3.0  0.23460
2006 1 5      6.7  0.26076
nan nan nan   NaN      NaN

当我删除空行时,它会导入并解析日期:

Out[26]:
            PRCP     VWC1
datetime                 
2006-01-01   0.0  0.17608
2006-01-02   6.0  0.21377
2006-01-03   0.1  0.22291
2006-01-04   3.0  0.23460
2006-01-05   6.7  0.26076

索引现在是所需的datetimeindex:

In [27]:

df.index
Out[27]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2006-01-01, ..., 2006-01-05]
Length: 5, Freq: None, Timezone: None

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐