Python利用pandas进行数据合并详解

 更新时间:2023年11月15日 08:46:45   作者:悬崖上的金鱼  
当使用Python中的pandas库时,merge函数是用于合并(或连接)两个数据框(DataFrame)的重要工具。它类似于SQL中的JOIN操作,下面我们就来看看它的具体操作吧

当使用Python中的pandas库时,merge函数是用于合并(或连接)两个数据框(DataFrame)的重要工具。它类似于SQL中的JOIN操作,允许你根据一个或多个键(key)将两个数据框连接起来。

merge函数的基本语法如下

pd.merge(
    left,  # 要合并的左侧 DataFrame
    right,  # 要合并的右侧 DataFrame
    how='inner',  # 连接方式,包括 'left', 'right', 'outer', 'inner',默认为 'inner'
    on=None,  # 用于连接的列名,必须存在于左侧和右侧 DataFrame 中
    left_on=None,  # 左侧 DataFrame 用于连接的列名
    right_on=None,  # 右侧 DataFrame 用于连接的列名
    left_index=False,  # 如果为 True,则使用左侧 DataFrame 的索引作为连接键
    right_index=False,  # 如果为 True,则使用右侧 DataFrame 的索引作为连接键
    suffixes=('_x', '_y'),  # 字符串后缀,用于重叠列名的处理
    sort=False,  # 根据连接键对合并后的数据进行排序
    copy=True,  # 如果为 False,可以提高性能,但是在某些情况下会修改原始数据
)

下面详细解释每个参数的用法:

  • leftright:要连接的左右两个数据框,可以是DataFrame对象、Series对象或者带有相同列名的字典。
  • on:指定用于连接的列名,如果两个数据框中的列名相同,可以直接指定为列名,如果列名不同,可以通过left_onright_on参数分别指定左右两个数据框的列名。
  • how:指定连接的方式,默认为'inner'。可选的取值有:
    • 'inner':内连接,只返回两个数据框中键匹配的行。
    • 'outer':外连接,返回两个数据框中所有的行,并用NaN填充缺失的值。
    • 'left':左连接,返回左侧数据框中所有的行,并用NaN填充右侧数据框中缺失的值。
    • 'right':右连接,返回右侧数据框中所有的行,并用NaN填充左侧数据框中缺失的值。
  • left_onright_on:如果要连接的列名不同,可以使用这两个参数分别指定左右两个数据框中用于连接的列名。
  • left_indexright_index:如果要根据索引进行连接,可以将这两个参数设为True。
  • sort:指定是否按照键对数据进行排序,默认为True。
  • suffixes:如果两个数据框中存在重复的列名,可以使用这个参数为它们添加后缀以区分,默认为('_x', '_y')。
  • copy:指定是否复制数据,默认为True。如果设置为False,可以避免复制数据而提高性能。
  • indicator:指定是否在结果数据框中添加一个表示连接方式的特殊列,默认为False。
  • validate:指定连接操作的有效性检查方式,可选的取值有None、'one_to_one'、'one_to_many'、'many_to_one'和'many_to_many'。

基本用法

merged_df = pd.merge(left_df, right_df, how='outer', on=['店铺名称'])   # 连接方式,包括 'left', 'right', 'outer', 'inner',默认为 'inner'
print(merged_df)

指定不同的列名

merged_df = pd.merge(left_df, right_df, how='outer', left_on='店铺名称', right_on='店铺名称2')
print(merged_df)

处理重复列名,相同列名加后缀

merged_df = pd.merge(left_df, right_df, how='outer', on=['店铺名称'], suffixes=('_left', '_right'))
print(merged_df)

根据索引进行合并

merged_df = pd.merge(left_df, right_df, how='outer', left_index=True, right_index=True)
print(merged_df)

 开启一列标记列,标记数据来源

merged_df = pd.merge(left_df, right_df, how='outer', on=['店铺名称','订单号'], indicator=True)
print(merged_df)

完整代码

import pandas as pd

# 读取两个 Excel 文件
left_df = pd.read_excel('C:\\Users\\liuchunlin2\\Desktop\\数据1.xlsx',sheet_name='Sheet2')
right_df = pd.read_excel('C:\\Users\\liuchunlin2\\Desktop\\数据2.xlsx',sheet_name='Sheet2')

#基本用法
merged_df = pd.merge(left_df, right_df, how='outer', on=['店铺名称'])   # 连接方式,包括 'left', 'right', 'outer', 'inner',默认为 'inner'
print(merged_df)

#指定不同的列名
merged_df = pd.merge(left_df, right_df, how='outer', left_on='店铺名称', right_on='店铺名称2')
print(merged_df)

#处理重复列名,相同列名加后缀
merged_df = pd.merge(left_df, right_df, how='outer', on=['店铺名称'], suffixes=('_left', '_right'))
print(merged_df)

#根据索引进行合并
merged_df = pd.merge(left_df, right_df, how='outer', left_index=True, right_index=True)
print(merged_df)

#开启一列标记列,标记数据来源
merged_df = pd.merge(left_df, right_df, how='outer', on=['店铺名称','订单号'], indicator=True)
print(merged_df)

数据一:

数据二:

以上就是Python利用pandas进行数据合并详解的详细内容,更多关于Python pandas数据合并的资料请关注脚本之家其它相关文章!

相关文章

  • python中mpi4py的所有基础使用案例详解

    python中mpi4py的所有基础使用案例详解

    这篇文章主要介绍了python中mpi4py的所有基础使用,本文通过10个案例给大家详细讲解,结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • python实现zabbix发送短信脚本

    python实现zabbix发送短信脚本

    这篇文章主要为大家详细介绍了python实现zabbix发送短信脚本,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • 使用python serial 获取所有的串口名称的实例

    使用python serial 获取所有的串口名称的实例

    今天小编就为大家分享一篇使用python serial 获取所有的串口名称的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Matplotlib实现各种条形图绘制

    Matplotlib实现各种条形图绘制

    这篇文章主要介绍了Matplotlib实现各种条形图绘制,文章通过利用 plt.bar 方法实现各种条形图绘制,内容详细具有一定的参考价值,需要的小伙伴可以参考一下
    2022-03-03
  • 使用Python 统计文件夹内所有pdf页数的小工具

    使用Python 统计文件夹内所有pdf页数的小工具

    这篇文章主要介绍了Python 统计文件夹内所有pdf页数的小工具,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • python中的flask框架Jinja 模板入门教程

    python中的flask框架Jinja 模板入门教程

    这篇文章主要介绍了 python中的flask框架Jinja 模板入门,Jinja 模板其实是 html 文件,一般情况下放在 Flask 工程的 /templates 目录下,对python flask Jinja 模板相关知识感兴趣的朋友一起看看吧
    2022-04-04
  • 将 Ubuntu 16 和 18 上的 python 升级到最新 python3.8 的方法教程

    将 Ubuntu 16 和 18 上的 python 升级到最新 python3.8 的方法教程

    这篇文章主要介绍了如何将 Ubuntu 16 和 18 上的 python 升级到最新 3.8 版,本文通过实例代码相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • 何用Python实现一个 “系统声音” 的实时律动挂件

    何用Python实现一个 “系统声音” 的实时律动挂件

    这篇文章将给大家介绍了如何用 Python 实现一个 “系统声音” 的实时律动挂件,采集后直接实时地在电脑上绘制波形动画,主要是用来作为 FL Studio 播放时的一个桌面小挂件,文中有相关的代码示例供大家参考,需要的朋友可以参考下
    2024-01-01
  • python 使用cx-freeze打包程序的实现

    python 使用cx-freeze打包程序的实现

    这篇文章主要介绍了python 使用cx-freeze打包程序的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • python实现交并比IOU教程

    python实现交并比IOU教程

    这篇文章主要介绍了python实现交并比IOU教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04

最新评论