2016-11-23 3 views
1

私はPython 2.5とpandasバージョン0.9.0で作業しており、DataFrameから日付の範囲を削除する必要があります。 私は次のコードでこれを実行しました。Python:pandasのDataFrameからデータ範囲を削除するより良い方法はありますか?

import pandas as pd 
import numpy as np 
import datetime 

date1 = datetime.datetime(2009,06,01,10,0) 
date2 = datetime.datetime(2009,06,02,05,00) 
dates = pd.date_range(start=date1,end=date2,freq="30min") 
df = pd.DataFrame(np.random.rand(len(dates), 1)*1500, index=dates, columns=['Power']) 

date3 = datetime.datetime(2009,06,01,16,0) 
date4 = datetime.datetime(2009,06,01,23,0) 
df1 = df[df.index <= date3] 
df2 = df[df.index >= date4] 
df_new = pd.concat([df1,df2]) 

すると、同じ結果を得るためのより良い方法はありますか?

私はこのような何かが仕事と期待していた。

df_new2 = df[df.index <= date3 | df.index >= date4] 

は、しかし、私は次のエラーを取得する:

TypeError: unsupported operand type(s) for |: 'datetime.datetime' and 'DatetimeIndex' 
+0

各条件の前後に括弧を入れます。df_new2 = df [(df.index <= date3)| (df.index> = date4)] –

答えて

2

問題は、Pythonがブール演算を適用する方法を知らないということです。これを行う:

df_new2 = df[(df.index <= date3) | (df.index >= date4)] 
関連する問題