新闻中心

基于多列合并 Pandas DataFrames 的方法

2025-11-18
浏览次数:
返回列表

基于多列合并 pandas dataframes 的方法

本文介绍了如何基于多个列将两个 Pandas DataFrames 进行合并,并处理缺失值的情况。我们将探讨使用 `merge` 函数以及 `add_suffix` 函数来清晰区分左右 DataFrame 的列,并展示如何对合并后的结果进行排序。

Pandas 提供了强大的数据合并功能,其中 merge 函数是实现 DataFrame 连接的关键工具。当需要基于多个列进行连接,并且希望处理两个 DataFrame 中存在差异的数据时,需要采取一些额外的技巧。

使用 merge 和 add_suffix

最直接的方法是使用 pandas.DataFrame.merge 函数,并结合 pandas.DataFrame.add_suffix 函数来区分左右 DataFrame 的列名。

import pandas as pd

# 示例数据
df1 = pd.DataFrame({
    'level': ['Level 0', 'Level 1', 'Level 1', 'Level 1', 'Level 2', 'Level 2', 'Level 3'],
    'title': ['Effective', 'Evaluation', 'Ice Breaker', 'Fire', 'Introduction', 'Understanding', 'Connect']
})

df2 = pd.DataFrame({
    'level': ['Level 0', 'Level 1', 'Level 1', 'Level 2', 'Level 2', 'Level 4'],
    'title': ['Effective', 'Evaluation', 'Comedy', 'Introduction', 'Understanding', 'Connect']
})

# 使用 merge 和 add_suffix
out = df1.merge(df2.add_suffix('_'), how='outer',
                left_on=['level', 'title'],
                right_on=['level_', 'title_'])

print(out)

这段代码首先导入 pandas 库,并创建两个示例 DataFrame df1 和 df2。然后,使用 merge 函数将这两个 DataFrame 连接起来。how='outer' 参数指定了外连接,这意味着保留两个 DataFrame 中的所有行,对于没有匹配的行,会填充 NaN 值。left_on 和 right_on 参数分别指定了左侧和右侧 DataFrame 中用于连接的列。add_suffix('_') 用于给 df2 的列名添加后缀,以避免列名冲突。

输出结果如下:

带缩略图和多种过渡动画的jquery焦点图特效 带缩略图和多种过渡动画的jquery焦点图特效

这是一款基于jssor.slider.js的炫酷jquery焦点图特效。该焦点图特效在底部带有缩略图,并且它在切换过渡是带有多种动画效果。该焦点图特效兼容ie8浏览器。 使用方法 在页面中引入样式文件jquery.min.js和jssor.slider.mini.js文件。

带缩略图和多种过渡动画的jquery焦点图特效 342 查看详情 带缩略图和多种过渡动画的jquery焦点图特效
     level          title   level_         title_
0  Level 0      Effective  Level 0      Effective
1  Level 1     Evaluation  Level 1     Evaluation
2  Level 1    Ice Breaker      NaN            NaN
3  Level 1           Fire      NaN            NaN
4  Level 2   Introduction  Level 2   Introduction
5  Level 2  Understanding  Level 2  Understanding
6  Level 3        Connect      NaN            NaN
7      NaN            NaN  Level 1         Comedy
8      NaN            NaN  Level 4        Connect

基于合并键排序

如果需要对合并后的结果基于连接键进行排序,可以使用以下方法:

import pandas as pd

# 示例数据
df1 = pd.DataFrame({
    'level': ['Level 0', 'Level 1', 'Level 1', 'Level 1', 'Level 2', 'Level 2', 'Level 3'],
    'title': ['Effective', 'Evaluation', 'Ice Breaker', 'Fire', 'Introduction', 'Understanding', 'Connect']
})

df2 = pd.DataFrame({
    'level': ['Level 0', 'Level 1', 'Level 1', 'Level 2', 'Level 2', 'Level 4'],
    'title': ['Effective', 'Evaluation', 'Comedy', 'Introduction', 'Understanding', 'Connect']
})


out = (df1.merge(df2, how='outer',
                 left_on=[df1['level'], df1['title']],
                 right_on=['level', 'title'])
          .sort_values(by=['level'])
          #.drop(columns=['level', 'title']) # uncomment to drop merged keys
      )

print(out)

这段代码与前一个示例类似,但使用了不同的 left_on 参数,将 df1['level'] 和 df1['title'] 作为列表传递给 left_on。然后,使用 sort_values 函数基于 'level' 列对结果进行排序。如果需要,可以取消注释 # .drop(columns=['level', 'title']) 行来删除合并键。

输出结果如下:

     level          title  level_x        title_x  level_y        title_y
0  Level 0      Effective  Level 0      Effective  Level 0      Effective
1  Level 1     Evaluation  Level 1     Evaluation  Level 1     Evaluation
2  Level 1    Ice Breaker  Level 1    Ice Breaker      NaN            NaN
3  Level 1           Fire  Level 1           Fire      NaN            NaN
7  Level 1         Comedy      NaN            NaN  Level 1         Comedy
4  Level 2   Introduction  Level 2   Introduction  Level 2   Introduction
5  Level 2  Understanding  Level 2  Understanding  Level 2  Understanding
6  Level 3        Connect  Level 3        Connect      NaN            NaN
8  Level 4        Connect      NaN            NaN  Level 4        Connect

注意事项

  • 列名冲突: 在合并 DataFrame 时,需要注意列名冲突的问题。可以使用 add_suffix 或 add_prefix 函数来避免冲突。
  • 连接类型: 根据实际需求选择合适的连接类型(inner, outer, left, right)。
  • 排序: 如果需要对结果进行排序,可以使用 sort_values 函数。
  • 缺失值: 外连接可能会引入缺失值(NaN)。可以使用 fillna 函数来填充缺失值。

总结

本文介绍了如何基于多个列合并 Pandas DataFrames,并处理缺失值和排序的问题。通过使用 merge 函数和 add_suffix 函数,可以灵活地控制 DataFrame 的连接方式,并获得所需的结果。 理解这些技巧对于进行复杂的数据分析和处理至关重要。

以上就是基于多列合并 Pandas DataFrames 的方法的详细内容,更多请关注其它相关文章!


# 解决问题  # 滨海新区网站优化推广  # 手把手教你优化网站营销  # 专业的营销推广报价明细  # 建设系统报名网站  # 同城抖音搜索关键词排名  # 胶州网站建设包括什么  # 电影网站软文推广公司  # 金华网站推广行者seo07  # 合肥生态丽景网站建设  # 鞋营销推广方案怎么写好  # 工具  # 中文网  # 这两个  # 相关文章  # 所需  # 这是  # 如何使用  # 这段  # 多个  # 可以使用 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 快速CSGO开箱网站指南 CSGO开箱平台推荐  使用J*aScript检测输入元素是否包含在特定类中  谷歌浏览器无痕模式怎么开 Chrome开启无痕浏览设置方法【教程】  PrimeNG Sidebar背景色自定义指南:CSS覆盖与主题化实践  uc浏览器网页版极速入口 uc网页浏览器网页版流畅体验  J*aScript map 迭代中检测空数组元素的有效方法  Mac怎么使用表情符号_Mac Emoji快捷键面板  c++中的std::basic_string的SSO优化_c++短字符串优化深度解析  Win11怎么安装Linux子系统 Win11 WSL2安装Ubuntu及环境配置指南  一加手机电池耗电快怎么办_一加手机电池耗电快的解决方法  邮编格式怎么匹配地址_根据邮编格式快速匹配详细地址的技巧  利用Bokeh CustomJS动态控制DataTable列可见性  C++如何进行游戏物理模拟_使用Box2D库为C++游戏添加2D物理效果  机器学习中对数变换预测结果的反向还原  腾讯QQ邮箱官方网站_QQ邮箱网页版在线登录  抖音未来赚钱的新趋势 2025年值得关注的变现风口分析  J*a递归快速排序中静态变量的状态管理与陷阱  修复二维数组索引越界异常:一维循环到二维坐标的正确映射  excel如何生成目录 excel一键生成工作表目录超链接  Windows电脑怎么截图最方便_系统自带截图工具的5种神仙用法【技巧】  AO3中文官网链接_AO3网页版稳定镜像站  学习通在线学习平台 学习通网页版直接进入课程中心  Yandex官网搜索引擎免登录_俄罗斯Yandex一键直达入口  Spyder启动失败:字体文件权限拒绝错误解决方案  2306选座时如何选靠窗位置_12306选座靠窗座位查看方法解析  AI抖音网页版免费视频入口 AI抖音网页端最新视频实时观看  夸克浏览器桌面版同步不了书签怎么处理 夸克浏览器跨设备同步异常解决方案  css链接悬停下划线样式如何自定义_使用::after结合content和transition  蛙漫漫画官网在线入口 蛙漫全本漫画免费阅读平台  在Qt QML中通过Python字典动态更新TextEdit内容的教程  Python中高效访问嵌套字典与列表中的键值对  中兴BladeV30怎样用测距估书架层高_iPhone中兴BladeV30测距估书架层高【家装参考】  sublime侧边栏怎么增强功能_SideBarEnhancements for sublime安装与配置  C++编译期如何执行复杂计算_C++模板元编程(TMP)技巧与应用  Android Studio计算器C键逻辑错误排查与修复:条件判断优化指南  在Blazor WebAssembly应用中动态注入客户端特定指标代码的策略  谷歌邮箱网页版官方页面入口 谷歌邮箱网页端快速访问  Lar*el DB::listen 事件中的查询执行时间单位解析  QQ邮箱在线登录平台 QQ邮箱个人邮箱网页版入口  Go与Ruby之间实现AES加密互通:CFB模式下的密钥长度匹配策略  Go Martini框架:动态服务解码后的图片内容  Golang如何优化内存分配与垃圾回收_Golang内存管理与GC优化实践  Go语言中Map存储的结构体如何调用指针方法:深入解析与实践  深入理解J*a编译器的兼容性选项:从-source到--release  Go语言中Map值调用指针接收器方法的限制与应对  百度网盘网页版入口 百度网盘网页版官方登录网址  汽水音乐在线版入口_汽水音乐网页播放手册  使用Pandas转换并合并DataFrame:多列映射至统一结构  J*aScript中如何高效提取对象指定属性  J*aScript中向JSON对象添加新属性的正确姿势 

搜索