我有以下数据框数据框: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
提交
取消