2016-03-19 11 views
3

私は以下のデータを含むファイルをpandasに持っています。パンダのフィルタリングと比較の日付

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

出力コードの次の行はdfとプリントでdate_beforeを比較するために、先週の日付

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

私は何をしようとしていることはあり得ることです

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

より小さいすべての行を削除する

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

私は次のようにマスクをするでしょう:date_before = datetime.date(2016, 1, 19)場合

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

、これが返されます。

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

私はまだ「シリーズの真理値はあいまいです。 –

+0

私はあなたのデータフレームをコピーし、 'df = pd.read_clipboard(parse_dates = [? 'newest_date_available']) '、そしてそのプロセスはうまくいきました。このようにして、まだ問題がある場合はお知らせください。 'parse_dates'パラメータには' pd.read_sql(parse_dates = ['newest_available_data']) 'のリストが必要です。 –

+0

'a = df [df ['newest_date_available']

0

また、あなたの列がdatetime型タイプであることを確認してください。使用

df.dtypes