2016-03-19 174 views
3

我有一個sql文件,其中包含我讀入熊貓的數據。熊貓過濾和比較日期

df = pandas.read_sql('Database count details', con=engine, 
        index_col='id', parse_dates='newest_available_date') 

輸出

id  code newest_date_available 
9793708 3514 2015-12-24 
9792282 2399 2015-12-25 
9797602 7452 2015-12-25 
9804367 9736 2016-01-20 
9804438 9870 2016-01-20 

的下一行代碼是讓上週的日期

date_before = datetime.date.today() - datetime.timedelta(days=7) # Which is 2016-01-20 

我所試圖做的是,用df和打印比較date_before淘汰所有小於date_before的行

if (df['newest_available_date'] < date_before): print(#all rows)

顯然,這將返回我一個錯誤The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

我應該怎麼辦呢?

回答

5

我會做面具,如:

a = df[df['newest_date_available'] < date_before] 

如果date_before = datetime.date(2016, 1, 19),這將返回:

 id code newest_date_available 
0 9793708 3514   2015-12-24 
1 9792282 2399   2015-12-25 
2 9797602 7452   2015-12-25 
+0

我仍然得到錯誤'系列的真值不明確。使用a.empty,a.bool(),a.item(),a.any()或a.all()。' –

+0

我複製了你的數據框並用'df = pd.read_clipboard(parse_dates = [ 'newest_date_available'])',那麼這個過程工作正常。嘗試以這種方式做到這一點,讓我知道你是否仍然有問題。請記住''parse_dates''參數需要一個列表,所以在'pd.read_sql(parse_dates = ['newest_available_data'])''中。 –

+0

我用'print(a)'拷貝了'a = df [df ['newest_date_available']

0

此外,還要確保你的列是日期時間類型。使用

df.dtypes