2017-01-04 71 views
2

我正在運行python 3.5,我已經導入了熊貓。我的csv文件(payinfo.csv)看起來像:我無法解析從csv文件到ipython的日期信息

"01 DEC",1234.45,2344,11,1212.66 

"01 NOV", 9898.33, 2343,12,1009.33 

當我運行以下命令:

dateparse = lambda x: pd.datetime.strptime(x,"%d %b") 
pay_data = pd.read_csv('payinfo.csv', parse_dates = ['Date'], date_parse 

我總是

"ValueError: time data '「01 DEC」' does not match format '%d %b'

我是一個新的程序員Python和將不勝感激任何幫助。

回答

1

我認爲這只是圍繞字符串雙引號引起的錯誤。嘗試剝離了與.strip('"')

例任何硬編碼(不是 '蟒蛇產生')單或雙引號:

a = '"01 DEC"' 
# Gives error 
#a = pd.datetime.strptime(a,"%d %b") 

# string without unneccessary quote marks 
a = pd.datetime.strptime(a.strip('"'),"%d %b") 
print a 

輸出:

1900-12-01 00:00:00 
1

您沒有在問題中包含標題。但這個工程:

import io 
import pandas as pd 

a = io.StringIO(u""""01 DEC",1234.45,2344,11,1212.66 

"01 NOV", 9898.33, 2343,12,1009.33""") 

dateparse = lambda x: pd.datetime.strptime(x,"%d %b") 
df = pd.read_csv(a,header=None, parse_dates=[0], date_parser=dateparse) 
print df 

您可以將自定義的一年爲x將其轉換爲datetime .strptime(year + x,"%Y%d %b") 輸出前:

  0  1  2 3  4 
0 1900-12-01 1234.45 2344 11 1212.66 
1 1900-11-01 9898.33 2343 12 1009.33 
0

感謝您都爲您的輸入。從你的答案我修改了CSV文件刪除日期條目周圍的引號,然後事情工作正常!我很困惑,因爲我以前使用過read_csv方法的類似數據看起來像這樣: 「2016/12/31」,「UPS商店」,「UPS UPS 031」,「10.74」,「借記卡」,「商業服務「,」興趣檢查「,」「,」「

」12/31/2016「,」東灣臨終關懷「,」東方醫院「,」14.00「,」借記卡「,」克拉拉「,」利息檢查「,」「,」「

並沒有問題 - 事實上我根本不需要解析數據,讀者能夠正確識別日期。咦!我想真正的問題是日期是以非常規格式存儲的。無論如何,我有答案,並且感謝你們的答覆。