我有以下數據框數據框:Date Name Value Rank Mean01/02/2019 A 10 100 8.202/03/2019 A 9 120 7.901/03/2019 B 3 40 6.403/02/2019 B 1 39 5.9...以及以下列表:date=['01/02/2019','03/02/2019'...]我想按列表過濾 df,但作為日期范圍,因此對于列表中的每個值,我想將日期和日期之間的數據帶回 30 天
2 回答

哈士奇WWW
TA貢獻1799條經驗 獲得超6個贊
我在numpy這里使用廣播,注意這個方法是 o(n*m) ,這意味著如果 df 和 date 列表都很大,它將超過內存限制
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
添加回答
舉報
0/150
提交
取消