2015-04-22 22 views
1

遵循: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 

我得到一個錯誤說:拉姆達()恰恰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

+1

這是否工作:'DF = pandas.read_csv(FILE_NAME,skiprows = 2,index_col = '日期時間', parse_dates = {'日期時間':[0,1,2]},delim_whitespace = True))'因爲這對我很有用,看起來熊貓解析器足夠處理日期格式 – EdChum

+0

如果我這樣做,那麼df.index結果爲一個對象而不是時間序列。 – user308827

+1

這對我來說絕對有效,雖然使用熊貓0.16.0和numpy 1.9.1 python 3.4.3 64位,你使用的是什麼版本的熊貓,numpy和python? – EdChum

回答

1

OK我看到的問題,您的文件已在年底外來空行,因爲它是尋找空白,不幸的是這打亂了解析器,這造成的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 
+0

再次感謝!這很清楚 – user308827