我有一个包含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
感谢您的帮助!
在lambda函数中将GroupBy.apply
与GroupBy.apply
一起使用:
Series.isin