如何在 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; ?>
】
相关推荐
- c# 在高并发下使用反射发射(Reflection
- Mac如何开启夜览模式_Mac护眼模式设置与定时
- 如何使用Golang实现Web表单数据绑定_自动映
- Win11怎么清理C盘下载文件夹_Win11清理下
- PHP怎么接收前端传的时间戳_处理时间戳参数转换技
- Win11怎么设置闹钟_Windows 11时钟应
- c++怎么调用nana库开发GUI_c++ 现代风
- Win11怎么查看局域网电脑_Windows 11
- 如何在Golang中处理二进制数据_Golang
- Win11怎么更改鼠标指针方案_Windows11
- Win11怎么设置系统还原_Windows11系统
- Win11如何添加/删除输入法 Win11切换中英
- Python音视频处理高级项目教程_FFmpegP
- Win10系统怎么查看显卡温度_Win10任务管理
- 如何在Golang中编写端到端测试_Golang
- Win10怎么卸载迅雷_Win10彻底卸载迅雷方法
- 如何在Golang中操作嵌套切片指针_Golang
- Win11开机速度慢怎么优化_Win11系统启动加
- Win10如何卸载Skype_Win10卸载Sky
- 如何在 Go 项目开发中正确处理本地包导入与远程模
- Win11用户账户控制怎么关_Win11关闭UAC
- Windows10如何删除恢复分区_Win10 D
- C++如何编写函数模板?(泛型编程入门)
- C++如何获取CPU核心数?(std::threa
- windows 10应用商店区域怎么改_windo
- Win11怎么设置右键刷新选项_Windows11
- Go 语言标准库为何不提供泛型切片的 Contai
- PowerShell怎么创建复杂的XML结构
- PHP的Workerman对架构扩展有啥帮助_应用
- Mac如何解压zip和rar文件?(推荐免费工具)
- 如何使用正则表达式提取以编号开头、后跟多个注解的完
- 如何在Golang中捕获JSON序列化错误_Gol
- Mac如何设置动态壁纸?(让桌面动起来)
- 短链接怎么用php还原_从基础原理到代码实现教学【
- Win10如何备份注册表_Win10注册表备份步骤
- Win11关机快捷键是什么_Win11快速关机方法
- Win11怎么修改DNS服务器 Win11设置DN
- Django 密码修改后会话失效的解决方案
- Win11怎样安装钉钉客户端_Win11安装钉钉教
- Drupal 中 HTML 链接被重复转义导致渲染
- c# 服务器GC和工作站GC的区别和设置
- php怎么下载安装后无法解析php文件_服务器配置
- 如何使用Golang指针与接口结合_实现方法调用和
- Windows如何设置登录时的欢迎屏幕背景?(锁屏
- php和redis连接超时怎么办_phpredis
- MAC如何修改默认应用程序_MAC文件后缀关联设置
- Python文件管理规范_工程实践说明【指导】
- WindowsUSB驱动安装异常怎么办_USB驱动
- 如何在 Go 应用中实现自动错误恢复与进程重启机制
- 如何将文本文件中的竖排字符串转换为横排字符串

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