You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python Lambda函数实现列值匹配结果二值化(非零转1)

需求

计算二值结果:判断Pandas DataFrame两列中是否存在至少一个匹配项,存在则返回1,不存在则返回0。

最小可复现示例(MRE)

import pandas as pd
df = pd.DataFrame({'col1':['a|b|c','a|b|c','a|b|c'],'col2':['b|d|e|a','d|e|f','a']})
# 当前代码仅计算交集长度,未转换为二值结果
df['new'] = df[['col1','col2']].apply(lambda x: len(set(x['col1'].split('|')).intersection(set(x['col2'].split('|')))),axis=1)

目标结果

期望得到包含二值结果的DataFrame:

pd.DataFrame({'col1':['a|b|c','a|b|c','a|b|c'],'col2':['b|d|e|a','d|e|f','a'],'new':[1,0,1]})

解决方案

通过在apply的lambda表达式中增加条件判断,将交集长度≥1的结果转为1,否则转为0:

import pandas as pd
df = pd.DataFrame({'col1':['a|b|c','a|b|c','a|b|c'],'col2':['b|d|e|a','d|e|f','a']})
df['new'] = df[['col1','col2']].apply(lambda x: 1 if len(set(x['col1'].split('|')).intersection(set(x['col2'].split('|')))) >=1 else 0, axis=1)

内容的提问来源于stack exchange,提问作者frank

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 10:23:15