如何在 Pandas 中按元素交集合并两列字符串
技术百科
花韻仙語
发布时间:2026-01-01
浏览: 次 本文介绍如何将 dataframe 中两列以逗号分隔的字符串进行逐行元素级交集运算,并生成新列;支持空交集时返回 `pd.na`,代码简洁高效,适用于文本标签、关键词匹配等场景。
在实际数据处理中,我们常遇到两列存储了用逗号分隔的标签、技能、品类等字符串(如 "#%#$#%@%@%$#%$#%#%#$%@_23eeeb4347bdd26bfc++6b7ee9a3b755dd, java, c++"),需要提取它们的共同元素作为新特征。Pandas 本身不直接支持字符串集合运算,但可通过 Python 原生 set 与列表推导式高效实现。
以下为完整操作步骤:
✅ 步骤一:构建示例数据
import pandas as pd
data = {
'Col1': ["apple, banana, orange", "dog, cat", "python, java, c++"],
'Col2': ["banana, lemon, blueberry", "bird, cat", "R, fortran"]
}
df = pd.DataFrame(data)✅ 步骤二:计算元素交集并生成 Col3
核心逻辑是:对每行的 Col1 和 Col2 字符串分别
① 用 .split(', ') 拆分为列表;
② 转为 set 类型以支持交集运算(&);
③ 将交集结果用 ', '.join() 合并回字符串;
④ 若交集为空,显式赋值为 pd.NA(推荐做法,保持缺失值语义清晰)。
df['Col3'] = [
', '.join(set(a.split(', ')) & set(b.split(', '))) or pd.NA
for a, b in zip(df['Col1'], df['Col2'])
]? 说明:or pd.NA 是简洁写法,等价于三元表达式 x if x else pd.NA。它确保空字符串(即无交集)被替换为 pd.NA,而非空字符串 "",从而正确参与后续 isna() 判断、统计或可视化。
✅ 输出效果
| Col1 | Col2 | Col3 |
|---|---|---|
| apple, banana, orange | banana, lemon, blueberry | banana |
| dog, cat | bird, cat | cat |
| python, java, c++ | R, fortran |
⚠️ 注意事项
-
空格敏感:split(', ') 要求逗号后紧跟一个空格。若原始数据格式不统一(如 "apple,banana" 或 "apple , cat"),建议先标准化:
df['Col1'] = df['Col1'].str.replace(r'\s*,\s*', ', ',
regex=True).str.strip() -
大小写处理:如需忽略大小写,可在转 set 前统一小写:
set(a.lower().split(', ')) & set(b.lower().split(', ')) - 性能提示:对于超大数据集(百万行以上),可改用 apply + lambda 并启用 vectorize=False,或考虑 swifter 加速;但列表推导式在多数场景下已足够快且内存友好。
该方法轻量、可读性强,无需额外依赖,是 Pandas 文本集合运算的经典实践方案。
# 大数据
# python
# app
# java
# c++
# apple
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Python日志系统设计与实现_高可观测性架构实战
- Windows如何使用注册表查找和删除项?(reg
- php中常量能用::访问吗_类常量与作用域操作符使
- 如何在 Go 中创建包含 map 的 slice(
- Mac的访达(Finder)怎么用_Mac文件管理
- Win11怎么查看显卡温度 Win11任务管理器查
- c++怎么使用std::tuple存储多元组数据_
- 如何在Golang中实现微服务服务拆分_Golan
- php与c语言在嵌入式中有何区别_对比两者在硬件控
- c++ nullptr与NULL区别_c++11空
- c++如何使用std::bind绑定函数参数_c+
- Win11怎么更改任务栏位置_修改注册表将Win1
- Win11怎么开启移动热点_Windows11共享
- 微信企业付款回调PHP怎么接收_处理企业付款异步通
- 零基础学会Python自动化办公_高效处理Exce
- Windows10系统怎么查看CPU核心数_Win
- php做exe支持多线程吗_并发处理实现方式【详解
- Windows7如何安装系统镜像_Windows7
- 如何使用 Python 合并文件夹内多个 Exce
- 如何提升Golang程序I/O性能_Golang
- Win11任务栏怎么固定应用 Win11将软件图标
- Win10电脑C盘红了怎么清理_Windows10
- Windows系统时间服务错误_W32Time服务
- Python异步编程高级项目教程_asyncio协
- 如何使用Golang反射创建map对象_动态生成键
- Windows 11怎么更改锁屏超时时间_Wind
- Win11时间怎么同步到原子钟 Win11高精度时
- Windows怎样关闭Edge新标签页广告_Win
- Windows 11无法安全删除U盘提示设备正在使
- Python文件和流处理指南_高效读写大体积数据文
- 如何使用Golang指针与接口结合_实现方法调用和
- 如何在 Django 中修改用户密码后保持会话不丢
- 如何使用Golang包导出规则_控制函数和变量可见
- Windows10系统怎么查看运行时间_Win10
- Win11怎么更改系统语言_Win11中文语言包下
- Python网络超时处理_健壮性设计说明【指导】
- Windows10怎么用“讲述人”读屏辅助 Win
- Windows10怎样设置家长控制_Windows
- Mac怎么设置登录项_Mac管理开机自启动程序【教
- Win11资源管理器卡顿怎么办 Win11文件资源
- Windows11怎样开启游戏模式_Windows
- Win11怎么关闭搜索历史_Win11清除任务栏搜
- Windows怎样关闭锁屏广告_Windows关闭
- 如何使用Golang写入二进制文件_Golang
- Win11如何设置系统声音_Win11系统声音调整
- Python迭代器生成器进阶教程_节省内存与懒加载
- 如何在 Go 中正确反序列化多个同级 XML 元素
- Win10闹钟铃声怎么自定义 Win10闹钟自定义
- Win11怎样安装网易云音乐_Win11安装网易云
- Windows怎样关闭桌面弹窗广告_Windows

regex=True).str.strip()
QQ客服