通过列表过滤数据框

时间:2019-03-25 22:41:47

标签: python pandas

我有以下数据框

数据框:

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天之间的数据

2 个答案:

答案 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)]