Python:有没有更好的方法从pandas中的DataFrame中删除数据范围?

时间:2016-11-23 17:47:41

标签: python datetime pandas dataframe

我在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'

1 个答案:

答案 0 :(得分:3)

问题是python不知道如何应用布尔运算。这样做:

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