我有以下数据框
数据框:
Date Name Value Rank Mean
01/02/2019 A 10 100 8.2
02/03/2019 A 9 120 7.9
01/03/2019 B 3 40 6.4
03/02/2019 B 1 39 5.9
...
以及以下列表:
date=['01/02/2019','03/02/2019'...]
我想按列表过滤df,但是将其作为日期范围,因此对于列表中的每个值,我想带回日期和30天之间的数据
答案 0 :(得分:0)
我在这里使用numpy
广播,请注意,此方法是o(n * m),这意味着如果df和日期列表都很大,它将超出内存限制
s=pd.to_datetime(date).values
df.Date=pd.to_datetime(df.Date)
s1=df.Date.values
t=(s-s1[:,None]).astype('timedelta64[D]').astype(int)
df[np.any((t>=0)&(t<=30),1)]
Out[120]:
Date Name Value Rank Mean
0 2019-01-02 A 10 100 8.2
1 2019-02-03 A 9 120 7.9
3 2019-03-02 B 1 39 5.9
答案 1 :(得分:0)
如果您的日期是字符串,请执行以下操作:
df[df.date.isin(list_of_dates)]