2014-11-24 49 views
0

read_csv在列不是索引時似乎不起作用。爲什麼?當日期列不是索引時,read_csv日期解析失敗

這不起作用:

from pandas import read_csv 
from StringIO import StringIO 


data = """Data,Sample\n9-Oct-14,Sample 1\n,Sample 2\n""" 

read_csv(StringIO(data), parse_dates=True) 



Out[19]: 
    Data  Sample 
0 9-Oct-14 Sample 1 
1 NaN   Sample 2 

這工作:

read_csv(StringIO(data), parse_dates=True, index_col=0) 


Out[20]: 
      Sample 
Data  
2014-10-09 Sample 1 
NaT   Sample 2 
+0

'什麼是不工作?你能顯示輸出並記下哪些不正確? – joris 2014-11-24 23:15:17

+0

@joris,我更新了這個問題。 – dmvianna 2014-11-24 23:17:24

+1

查看'read_csv'的文檔字符串,'parse_dates'的解釋:「If True - > try parsing the index。」因此,當你指定哪一列應該是索引時,這是有效的。另一個選項是指定使用'parse_dates'分析哪一列 – joris 2014-11-24 23:24:48

回答

0

Mac OS X上使用Python 3.4.1和稍微適應代碼我得到完全相同的輸出,兩者的提供數據流或代碼片段。

CODE:

from pandas import read_csv 
import io 


data1 = """Data,Sample\n09-Oct-14,Sample 1\n,Sample 2\n""" 
data2 = """Data\tSample\n01-AUG-09\tSample 1\n\tSample 2\n""" 

df1 = read_csv(io.StringIO(data1),parse_dates=True, index_col=0) 
df2 = read_csv(io.StringIO(data2),sep='\t',parse_dates=True, index_col=0) 

print(df1) 
print('\n') 
print(df2) 

OUTPUT:

   Sample 
Data     
2014-10-09 Sample 1 
NaT   Sample 2 


       Sample 
Data     
2009-08-01 Sample 1 
NaT   Sample 2 
0

明白了。

read_csv(StringIO(data),parse_dates=['Data']) 

Out[27]: 
    Data  Sample 
0 2014-10-09 Sample 1 
1 NaT   Sample 2