2017-02-26 41 views
1

如何將csv文件中的標頭解析爲日期?我想在pandas.read_csv函數使用一些參數:在Python/pandas中將文件標頭解析爲日期對象

import pandas as pd 
data = pd.read_csv(path, header=1, infer_datetime_format=1, parse_dates=True) 

但沒有數據被格式化爲日期,但2列至6

標題我嘗試使用索引來parse_datesparse_dates=columns[2,3,4,5,6] ,但會引發錯誤,因爲columns在此階段無法識別。

原料CSV:

Name,Adm.,1980-12-31,1992-12-31,2002-05-20,2011-03-31,2015-12-31,Area 
Aleksandrów Łódzki,LOD,"17.000","20.251","20.220","21.085","21.354",1382 
Andrychów,MAL,"19.400","23.144","22.187","21.530","20.940",1033 

讀取的如下:

print(data[0:2]) 

Aleksandrów Łódzki LOD  17.000 20.251 20.220 21.085 21.354 1382 
Andrychów MAL  19.400 23.144 22.187 21.530 20.940 1033 1 
Augustów POD  24.300 29.089 29.705 30.802 30.400 8090 2 

編輯

對不起。我想刪除這篇文章。我的csv文件有錯誤。頭應該是這樣的:

Miasto,Adm,"1980-12-31","1992-12-31","2002-05-20","2011-03-31","2015-12-31",Area

也就是說,用引號日期。然後一切都是自動的。我的錯。對於那些沒有訪問csv文件的人來說,這可能會很有挑戰性。哈哈。

回答

1

一個實現你所追求的方式是你在csv文件讀取後重命名列:

df = pd.read_csv(path, infer_datetime_format=1, parse_dates=True) 
columns = {} 
for col in df.columns: 
    try: 
     columns[col] = pd.to_datetime(col, infer_datetime_format=True) 
    except ValueError: 
     pass 
df.rename(columns=columns, inplace=True) 
+0

是一致的:您的解決方案正常工作。日期與時間有關,但這並不重要。 '1980-12-31 00:00:00'。我想知道,如果在讀取數據之後進行轉換是可能的,因爲這些字段就像浮點數一樣被格式化。 –