2015-07-01 125 views
3

我有一個數據框,如下所示,並且我試圖減少數據框以僅包含日期大於變量curve_enddate的行。 df['Date']是在datetime,因此我試圖轉換curve_enddate[i][0],它給出了一個形式2015-06-24形式的字符串爲datetime,但得到錯誤ValueError: time data '2015-06-24' does not match format '%Y-%b-%d'將字符串轉換爲日期時間時的ValueError

   Date  Maturity  Yield_pct Currency 
0  2015-06-24   0.25    na  CAD 
1  2015-06-25   0.25 0.0948511020  CAD 

在那裏我得到了錯誤的行:

df = df[df['Date'] > time.strptime(curve_enddate[i][0], '%Y-%b-%d')] 

謝謝

回答

2

你不能比較一個元組time.struct_time的這是什麼time.strptime返回到Timestamp,所以你還需要更改以及使用m這是一個月使用'%Y-%m-%d'作爲十進制數字。您可以使用pd.to_datetime創建要比較的對象:

df = df[df['Date'] > pd.to_datetime(curve_enddate[i][0], '%Y-%m-%d')] 
+0

@PadraicCunnigham你是對the'time.struct_time tuple'問題。但是,我現在得到錯誤'TypeError:無法比較類型'str''的類型'時間戳'。你知道這是爲什麼嗎? – user131983

+1

是的,您沒有將日期列轉換爲日期時間。你使用read_csv來創建df嗎? –

+1

嘗試'df [df [「Date」]。apply(pd.to_datetime)> pd.to_datetime(curve_enddate [i] [0],'%Y-%m-%d')]]',如果您計劃使用日期很多,我會永久性地設置它們。如果您正在使用read_csv,請使用轉換器= {「Date」:pd.to_datetime}'投射到datetime –

4

您正在使用錯誤的日期格式,%b是命名個月(縮寫像JanFeb等) ,在編號的月份使用%m

碼 -

df = df[df['Date'] > time.strptime(curve_enddate[i][0], '%Y-%m-%d')] 
相關問題