![](/img/trans.png)
[英]How do you extract specific values from a column in one dataframe and append them to a column in another dataframe? - Pandas
[英]How do you filter on specific values of a column in one dataframe based on conditions of another dataframe?
我有两个看起来像这样的数据框:
#df1
id | count | mindate
x 3 01/01/2020
y 4 01/02/2019
z 5 01/03/2019
#df2
id | date
x 01/01/2019
x 01/02/2019
x 01/01/2020
y 01/02/2018
y 01/03/2019
y 01/04/2020
z 01/04/2019
z 01/05/2020
我想做的是,如果一个 id 的计数小于 4,那么我想将该 id 的日期保持在 2019 年之后。如果一个 id 的计数大于或等于 4一个 id,那么我只想保持 id 的日期超过其 mindate 值。 所以最终的 dataframe 应该是这样的:
id | date
x 01/01/2019
x 01/02/2019
x 01/01/2020
y 01/03/2019
y 01/04/2020
z 01/04/2019
z 01/05/2020
我已经合并了这两个数据框,但我不确定在那之后该怎么做。
左merge
dataframe df2
与df1
上id
,然后使用np.where
创建 boolean 掩码从df2
过滤行
s = df2.merge(df1, on='id', how='left', sort=False)
m = np.where(s['count'] < 4, s['date'].dt.year >= 2019, s['date'] > s['mindate'])
>>> df2[m]
id date
0 x 2019-01-01
1 x 2019-01-02
2 x 2020-01-01
4 y 2019-01-03
5 y 2020-01-04
6 z 2019-01-04
7 z 2020-01-05
PS:在使用此方法之前,您需要将df1
和df2
中的日期列解析为datetime
类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.