我有一个带有“ DateTime”列的Pandas DataFrame。我需要过滤掉DataFrame中具有该日期的所有行,并在目标日期后加上-7天和+7天。
应该是这样的:test = dataset.loc[-7:"4/17/2017":+7].hp1.values
实现此目标的最佳方法是什么?
答案 0 :(得分:1)
想法是通过Timedelta
在上方和下方创建日期时间,然后使用开始和结束日期时间进行过滤,对于按列名进行过滤的情况,请将其添加到DataFrame.loc
:
#sample data
dataset = pd.DataFrame({'hp1':range(20)}, index=pd.date_range('04-09-2017', periods=20))
#print(dataset)
d = "4/17/2017"
date = pd.to_datetime(d)
td = pd.Timedelta(7, unit='d')
#alternative
#td = pd.offsets.DateOffset(days=7)
start = date - td
end = date + td
test = dataset.loc[start:end, 'hp1']
print (test)
2017-04-10 1
2017-04-11 2
2017-04-12 3
2017-04-13 4
2017-04-14 5
2017-04-15 6
2017-04-16 7
2017-04-17 8
2017-04-18 9
2017-04-19 10
2017-04-20 11
2017-04-21 12
2017-04-22 13
2017-04-23 14
2017-04-24 15
Freq: D, Name: hp1, dtype: int64