为了账号安全,请及时绑定邮箱和手机立即绑定

按列表过滤数据框

按列表过滤数据框

慕哥9229398 2021-12-16 16:11:42
我有以下数据框数据框: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 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

如果您的日期是字符串,请执行以下操作:

df[df.date.isin(list_of_dates)]


查看完整回答
反对 回复 2021-12-16
?
哈士奇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


查看完整回答
反对 回复 2021-12-16
  • 2 回答
  • 0 关注
  • 120 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信