猿问

按列表过滤数据框

我有以下数据框


数据框:


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 天


慕哥9229398
浏览 121回答 2
2回答

慕哥6287543

如果您的日期是字符串,请执行以下操作:df[df.date.isin(list_of_dates)]

哈士奇WWW

我在numpy这里使用广播,注意这个方法是 o(n*m) ,这意味着如果 df 和 date 列表都很大,它将超过内存限制s=pd.to_datetime(date).valuesdf.Date=pd.to_datetime(df.Date)s1=df.Date.valuest=(s-s1[:,None]).astype('timedelta64[D]').astype(int)df[np.any((t>=0)&(t<=30),1)]Out[120]:&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; Date Name&nbsp; Value&nbsp; Rank&nbsp; Mean0 2019-01-02&nbsp; &nbsp; A&nbsp; &nbsp; &nbsp;10&nbsp; &nbsp;100&nbsp; &nbsp;8.21 2019-02-03&nbsp; &nbsp; A&nbsp; &nbsp; &nbsp; 9&nbsp; &nbsp;120&nbsp; &nbsp;7.93 2019-03-02&nbsp; &nbsp; B&nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; 39&nbsp; &nbsp;5.9
随时随地看视频慕课网APP

相关分类

Python
我要回答