Pandas DataFrame merge() function is used to merge two DataFrame objects with a database-style join operation. The joining is performed on columns or indexes.

Pandas DataFrame merge()函数用于通过数据库样式的合并操作合并两个DataFrame对象。 连接是对列或索引执行的。

If the joining is done on columns, indexes are ignored. This function returns a new DataFrame and the source DataFrame objects are unchanged.

如果对列进行了连接,则索引将被忽略。 此函数返回一个新的DataFrame,并且源DataFrame对象不变。

Pandas DataFrame merge()函数语法 (Pandas DataFrame merge() Function Syntax)

The merge() function syntax is:

merge()函数的语法为:

def merge(self,right,how="inner",on=None,left_on=None,right_on=None,left_index=False,right_index=False,sort=False,suffixes=("_x", "_y"),copy=True,indicator=False,validate=None,
)
  • right: The other DataFrame to merge with the source DataFrame.right :另一个与源DataFrame合并的DataFrame。
  • how: {‘left’, ‘right’, ‘outer’, ‘inner’}, default ‘inner’. This is the most important parameter to define the merge operation type. These are similar to SQL left outer join, right outer join, full outer join, and inner join.方式 :{'左','右','外','内'},默认为'内'。 这是定义合并操作类型的最重要参数。 这些类似于SQL的左外部联接,右外部联接,完全外部联接和内部联接。
  • on: Column or index level names to join on. These columns must be present in both the DataFrames. If not provided, the intersection of the columns in both DataFrames are used.on :要加入的列或索引级别名称。 这些列必须同时存在于两个DataFrame中。 如果未提供,则使用两个DataFrame中列的交集。
  • left_on: Column or index level names to join on in the left DataFrame.left_on :要在左侧DataFrame中加入的列或索引级别名称。
  • right_on: Column or index level names to join on in the right DataFrame.right_on :要在右侧DataFrame中加入的列或索引级别名称。
  • left_index: Use the index from the left DataFrame as the join key(s).left_index :将左侧DataFrame的索引用作连接键。
  • right_index: Use the index from the right DataFrame as the join key.right_index :将右侧DataFrame中的索引用作连接键。
  • sort: Sort the join keys lexicographically in the result DataFrame.sort :按字典顺序对结果DataFrame中的联接键进行排序。
  • suffixes: Suffix to apply to overlapping column names in the left and right side, respectively.后缀 :后缀分别应用于左侧和右侧的重叠列名称。
  • indicator: If True, adds a column to output DataFrame called “_merge” with information on the source of each row.indicator :如果为True,则在输出数据帧中添加一列,称为“ _merge”,其中包含有关每一行源的信息。
  • validate: used to validate the merge process. The valid values are {“one_to_one” or “1:1”, “one_to_many” or “1:m”, “many_to_one” or “m:1”, “many_to_many” or “m:m”}.validate :用于验证合并过程。 有效值为{“ one_to_one”或“ 1:1”,“ one_to_many”或“ 1:m”,“ many_to_one”或“ m:1”,“ many_to_many”或“ m:m”}。

熊猫DataFrame merge()示例 (Pandas DataFrame merge() Examples)

Let’s look at some examples of merging two DataFrame objects.

让我们看一下合并两个DataFrame对象的一些示例。

1.默认合并–内部联接 (1. Default Merging – inner join)

import pandas as pdd1 = {'Name': ['Pankaj', 'Meghna', 'Lisa'], 'Country': ['India', 'India', 'USA'], 'Role': ['CEO', 'CTO', 'CTO']}df1 = pd.DataFrame(d1)print('DataFrame 1:\n', df1)df2 = pd.DataFrame({'ID': [1, 2, 3], 'Name': ['Pankaj', 'Anupam', 'Amit']})
print('DataFrame 2:\n', df2)df_merged = df1.merge(df2)
print('Result:\n', df_merged)

Output:

输出:

DataFrame 1:Name Country Role
0  Pankaj   India  CEO
1  Meghna   India  CTO
2    Lisa     USA  CTO
DataFrame 2:ID    Name
0   1  Pankaj
1   2  Anupam
2   3    Amit
Result:Name Country Role  ID
0  Pankaj   India  CEO   1

2.使用左,右和外部联接合并数据框 (2. Merging DataFrames with Left, Right, and Outer Join)

print('Result Left Join:\n', df1.merge(df2, how='left'))
print('Result Right Join:\n', df1.merge(df2, how='right'))
print('Result Outer Join:\n', df1.merge(df2, how='outer'))

Output:

输出:

Result Left Join:Name Country Role   ID
0  Pankaj   India  CEO  1.0
1  Meghna   India  CTO  NaN
2    Lisa     USA  CTO  NaN
Result Right Join:Name Country Role  ID
0  Pankaj   India  CEO   1
1  Anupam     NaN  NaN   2
2    Amit     NaN  NaN   3
Result Outer Join:Name Country Role   ID
0  Pankaj   India  CEO  1.0
1  Meghna   India  CTO  NaN
2    Lisa     USA  CTO  NaN
3  Anupam     NaN  NaN  2.0
4    Amit     NaN  NaN  3.0

3.在特定列上合并DataFrame (3. Merging DataFrame on Specific Columns)

import pandas as pdd1 = {'Name': ['Pankaj', 'Meghna', 'Lisa'], 'ID': [1, 2, 3], 'Country': ['India', 'India', 'USA'],'Role': ['CEO', 'CTO', 'CTO']}
df1 = pd.DataFrame(d1)df2 = pd.DataFrame({'ID': [1, 2, 3], 'Name': ['Pankaj', 'Anupam', 'Amit']})print(df1.merge(df2, on='ID'))
print(df1.merge(df2, on='Name'))

Output:

输出:

Name_x  ID Country Role  Name_y
0  Pankaj   1   India  CEO  Pankaj
1  Meghna   2   India  CTO  Anupam
2    Lisa   3     USA  CTO    AmitName  ID_x Country Role  ID_y
0  Pankaj     1   India  CEO     1

4.指定用于合并DataFrame对象的左列和右列 (4. Specify Left and Right Columns for Merging DataFrame Objects)

import pandas as pdd1 = {'Name': ['Pankaj', 'Meghna', 'Lisa'], 'ID1': [1, 2, 3], 'Country': ['India', 'India', 'USA'],'Role': ['CEO', 'CTO', 'CTO']}
df1 = pd.DataFrame(d1)df2 = pd.DataFrame({'ID2': [1, 2, 3], 'Name': ['Pankaj', 'Anupam', 'Amit']})print(df1.merge(df2))print(df1.merge(df2, left_on='ID1', right_on='ID2'))

Output;

输出;

Name  ID1 Country Role  ID2
0  Pankaj    1   India  CEO    1Name_x  ID1 Country Role  ID2  Name_y
0  Pankaj    1   India  CEO    1  Pankaj
1  Meghna    2   India  CTO    2  Anupam
2    Lisa    3     USA  CTO    3    Amit

5.使用索引作为合并数据帧的联接键 (5. Using Index as the Join Keys for Merging DataFrames)

import pandas as pdd1 = {'Name': ['Pankaj', 'Meghna', 'Lisa'], 'Country': ['India', 'India', 'USA'], 'Role': ['CEO', 'CTO', 'CTO']}
df1 = pd.DataFrame(d1)df2 = pd.DataFrame({'ID': [1, 2, 3], 'Name': ['Pankaj', 'Anupam', 'Amit']})df_merged = df1.merge(df2)
print('Result Default Merge:\n', df_merged)df_merged = df1.merge(df2, left_index=True, right_index=True)
print('\nResult Index Merge:\n', df_merged)

Output:

输出:

Result Default Merge:Name Country Role  ID
0  Pankaj   India  CEO   1Result Index Merge:Name_x Country Role  ID  Name_y
0  Pankaj   India  CEO   1  Pankaj
1  Meghna   India  CTO   2  Anupam
2    Lisa     USA  CTO   3    Amit

参考资料 (References)

  • Python Pandas Module TutorialPython Pandas模块教程
  • DataFrame merge() API DocDataFrame merge()API文档

翻译自: https://www.journaldev.com/33516/pandas-merge-two-dataframe

熊猫merge()–合并两个DataFrame对象相关推荐

  1. R语言dplyr包使用bind_rows函数纵向合并两个dataframe(行生长)、使用bind_cols函数横向合并两个dataframe(列生长)

    R语言dplyr包使用bind_rows函数纵向合并两个dataframe(行生长).使用bind_cols函数横向合并两个dataframe(列生长) 目录

  2. es6如何修改json数组里的某个值_如何通过id使用纯Javascript(ES6)合并两个json对象值...

    我有两个Javascript对象数组,并且想要将具有相同"ObjID"的两个Javascript对象的属性合并为一个Javascript对象.如何通过id使用纯Javascript ...

  3. js深度合并两个数组对象

    js合并两个数组对象, 如果a中含有b,则b的值覆盖a的值 如果a中不含有b 则b的值新增到a MergeRecursive(obj1, obj2) {// 合并两个数组for (var p in o ...

  4. 如何动态合并两个JavaScript对象的属性?

    我需要能够在运行时合并两个(非常简单的)JavaScript对象. 例如,我想: var obj1 = { food: 'pizza', car: 'ford' } var obj2 = { anim ...

  5. 【JQuery】使用JQuery 合并两个 json 对象

    一,保存object1和2合并后产生新对象,若2中有与1相同的key,默认2将会覆盖1的值 1 var object = $.extend({}, object1, object2); 二,将2的值合 ...

  6. $merge()合并两个数组方法

    项目中用到了需要合并多个数组的方法,jq里有$.merge()方法比较好用,但是只能合并两个数组,合并多个的话需要重复使用,不可以一次性使用,这个就有点不合理啦嘿嘿! ar gallery = $(' ...

  7. js合并两个json对象

    js把两个对象合并成一个对象 文章目录 js把两个对象合并成一个对象 前言 一.使用Object.assign()解决该问题 1.方法介绍 2.语法 二.示例 1.复制对象 2.合并对象 3.合并具有 ...

  8. js合并两个数组对象并且去掉重复的内容(map结合find)

    demo如下: const arr1 = [{id:'1',name:'小红'},{id:'2',name:'小绿'},{id:'3',name:'小黄'}];const arr2 = [{id:'1 ...

  9. 【一语点醒梦中人】如何优雅地合并两个JSON对象 → Object.assign(a, b)和Object.assign({}, a, b)的区别

    var a = {a: 1}; var b = {b: 2}; var c = Object.assign(a, b);/* a对象也会改变,b不变,返回被被修改对象 */ var d = Objec ...

最新文章

  1. 关于csgo的观看录像fps低_中国CSGO神秘天才欲初登赛场!却因这件事被无数人所质疑!!...
  2. Spring boot修改员工
  3. Ubuntu 14.04 修改时区
  4. c语言可变入参中的每个参数的类型可以不同,编程入门:浅谈C语言的可变参数
  5. 三全食品:信息化建设狂飙突进的六年
  6. 机器学习中的距离和损失函数
  7. 新趋势下的云计算安全行业前沿认证|CCSK
  8. 游戏加加导致cpu降频
  9. Java11完全兼容Java8吗_Java11正式发布,要不要升级请看这里!
  10. 超级节点的困境,社区治理的尴尬 |链捕手
  11. Postman之Pre-request Script 使用详解
  12. 优化算法之引力搜索算法
  13. vue大屏展示高度自适应
  14. aws--s3存储类别--对s3进行存储分层优化
  15. 上班拍抖音需谨慎!Tiktok「科技网红」因自拍泄密被苹果解雇
  16. gazebo 直接获取传感器数据_基于uFUN开发板的心率计(一)DMA方式获取传感器数据...
  17. 乐视网今日开市起停牌 深交所将作出是否暂停上市的决定
  18. Word文件解除限制编辑
  19. 游戏程序设计 # ch13 开发工具 # 开发语言、开发环境、腾讯开发组件、网络通信和业务框架介绍
  20. python mysql 插入_Python向MySQL插入数据

热门文章

  1. 强大的Qtstylesheet
  2. asp.net 中的 主从 新增,修改,删除。
  3. RFID--Radio frequency Identification
  4. [转载] 整理总结 python 中时间日期类数据处理与类型转换(含 pandas)
  5. [转载] Java中的strictfp关键字
  6. 超哥笔记 --nginx入门(6)
  7. Java 开发环境搭建
  8. 怎样维系和监督多项计划
  9. 操作可能会破坏运行时稳定性的解决办法
  10. DELPHI的编译指令