【发布时间】:2020-03-09 06:11:41
【问题描述】:
我想根据数据框系列中最大值日期两侧的日期范围过滤数据框。过滤适用于手动输入的日期,例如'2018-01-05' 但是当该日期存储在系列对象中时,它将不起作用 - 我太厚了,无法弄清楚原因。 我尝试过字符串转换并从系列中提取日期作为值,但无济于事。这是一个程式化的版本:
data = {'dates':['2018-01-01','2018-01-02','2018-01-03','2018-01-04','2018-01-05', \
'2018-01-06'],'values':[-20,30,15,10,4,7]}
data = pd.DataFrame(data)
data.dates = pd.to_datetime(data.dates,dayfirst=True)
maxval = data.nlargest(1,'values')
maxdate = maxval.loc[:,'dates']
start_remove = maxdate-timedelta(days=1)
end_remove = maxdate+timedelta(days=1)
data.loc[(data['dates']<start_remove) | (data['dates']>end_remove)]
给出 ValueError:只能比较标签相同的 Series 对象
而:
data.loc[(data['dates']<'2018-01-03) | (data['dates']>'2018-01-05)]
工作得很好。
【问题讨论】:
标签: python pandas dataframe datetime filter