df
CAR1 CAR2
['ford','hyundai'] ['ford','hyundai']
['ford','hyundai'] ['hyundai','nissan']
['ford','hyundai'] ['bmw', 'audi']
预期产出:
CAR1 CAR2 Flag
['ford','hyundai'] ['ford','hyundai'] 1
['ford','hyundai'] ['hyundai','nissan'] 1
['ford','hyundai'] ['bmw', 'audi'] 0
如果CAR1中的任何元素/字符串与CAR2匹配,则引发标志1,否则引发标志0
我的尝试是:
df[[x in y for x,y in zip(df['CAR1'], df['CAR2'])]
2条答案
按热度按时间jfgube3f1#
EDIT:首先将列转换为列表:
在列表解析中使用
set.intersection
,并转换为布尔值和整数,以实现True,False
到1/0
的Map:替代解决方案:
vc9ivgsu2#
您可以在列表解析中使用
set
运算(如果集合重叠,isdisjoint
返回False,使用1-x
将其反转并转换为整数):isdisjoint
的速度非常快,因为它不需要读取完整的集合,只要找到一个公共项就返回False。*输出:
从字符串