我在Python 2.5
和pandas版本0.9.0
下工作,需要从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 :(得分:3)
问题是python不知道如何应用布尔运算。这样做:
df_new2 = df[(df.index <= date3) | (df.index >= date4)]