Python Pandas:检查一列中的值是否出现在另一列中的行子集中

问题描述 投票:1回答:1

我有一个包含3列的数据框df:“颜色”,“之前”,“之后”。我需要检查每种颜色的“之前”列中是否存在“之后”列中的每个项目。如果在颜色子集中找到一个值,我希望用'True'创建一个新列'is_present',否则将创建'False'。

抱歉,不清楚,我添加了预期的结果:

     color      before       after  expected_result
0   yellow    product1    product5        True
1   yellow    product2    product6        True
2   yellow    product3    product7        True
3   yellow    product4    product8        True
4   yellow    product5    product9        True
5   yellow    product6   product10        True
6   yellow    product7   product11        True
7   yellow    product8   product12       False
8   yellow    product9   product13       False
9   yellow   product10   product14       False
10  yellow   product11   product15       False
11     red   product16   product16        True
12     red   product17  product 25       False
13     red   product18  product 26       False
14     red   product19  product 27       False
15     red   product20  product 28       False
16     red   product21   product21        True
17     red   product22   product22        True
18     red   product15   product24        True
19     red   product24   product23       False
20   green   product29   product33        True
21   green  product 33   product34        True
22   green   product31   product38        True
23   green   product32   product35        True
24   green   product33   product36        True
25   green   product34   product32        True
26   green   product35   product29        True
27   green   product36   product30       False
28   green   product37   product37        True
29   green   product38   product31        True

我尝试使用循环,搜索似乎运行正确,但是在创建新列时似乎出错了(它删除了预览检查)。

我的部分解决方案:

for color in df['color'].unique():
    df['is_present'] = df['after'].isin(df[df['color'] == color]['before'])
df

My result is here

感谢您的帮助!

python pandas loops
1个回答
0
投票

在lambda函数中将GroupBy.applyGroupBy.apply一起使用:

Series.isin
© www.soinside.com 2019 - 2024. All rights reserved.