pandas库学习之merge函数

pandas库学习之merge函数

一、简介

pandas.merge函数用于合并两个DataFrame对象。它根据一个或多个键将两个DataFrame对象连接在一起,类似于SQL中的JOIN操作。

二、语法和参数

python 复制代码
pandas.merge(left, 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)
参数:
  • left:第一个要合并的DataFrame对象。⭐
  • right:第二个要合并的DataFrame对象。⭐
  • how :字符串,默认值为inner,表示连接类型。可选值有leftrightouterinner。⭐
  • on :列名或列名的列表,表示用于连接的列。必须存在于左右两个DataFrame中。⭐
  • left_on:左侧DataFrame中用于连接的列名或索引级别。
  • right_on:右侧DataFrame中用于连接的列名或索引级别。
  • left_index:布尔值,表示是否使用左侧DataFrame的索引进行连接。
  • right_index:布尔值,表示是否使用右侧DataFrame的索引进行连接。
  • sort:布尔值,表示是否按连接键对结果进行排序。默认值为False。
  • suffixes :字符串元组,表示重复列名的后缀,默认值为(_x, _y)。
  • copy:布尔值,默认值为True,表示是否在合并数据时始终复制数据。
  • indicator:布尔值或字符串,表示是否添加一列指示每个行的来源。
  • validate :字符串,用于验证合并的类型。可选值有one_to_oneone_to_manymany_to_onemany_to_many

三、实例

3.1 内连接
python 复制代码
import pandas as pd

df1 = pd.DataFrame({
    'key': ['A', 'B', 'C', 'D'],
    'value1': [1, 2, 3, 4]
})

df2 = pd.DataFrame({
    'key': ['B', 'D', 'E', 'F'],
    'value2': [5, 6, 7, 8]
})

merged_df = pd.merge(df1, df2, on='key', how='inner')

print(merged_df)

输出:

复制代码
  key  value1  value2
0   B       2       5
1   D       4       6
3.2 左连接
python 复制代码
import pandas as pd

df1 = pd.DataFrame({
    'key': ['A', 'B', 'C', 'D'],
    'value1': [1, 2, 3, 4]
})

df2 = pd.DataFrame({
    'key': ['B', 'D', 'E', 'F'],
    'value2': [5, 6, 7, 8]
})

merged_df = pd.merge(df1, df2, on='key', how='left')

print(merged_df)

输出:

复制代码
  key  value1  value2
0   A       1     NaN
1   B       2     5.0
2   C       3     NaN
3   D       4     6.0
3.3 外连接
python 复制代码
import pandas as pd

df1 = pd.DataFrame({
    'key': ['A', 'B', 'C', 'D'],
    'value1': [1, 2, 3, 4]
})

df2 = pd.DataFrame({
    'key': ['B', 'D', 'E', 'F'],
    'value2': [5, 6, 7, 8]
})

merged_df = pd.merge(df1, df2, on='key', how='outer')

print(merged_df)

输出

复制代码
  key  value1  value2
0   A     1.0     NaN
1   B     2.0     5.0
2   C     3.0     NaN
3   D     4.0     6.0
4   E     NaN     7.0
5   F     NaN     8.0

四、注意事项

  1. 确保用于连接的键在两个DataFrame中都存在,否则结果会不如预期。
  2. 连接类型(如innerouterleftright)决定了合并结果的形状和内容。选择适当的连接类型非常重要。
  3. 使用suffixes参数可以避免在连接时因列名冲突而导致的问题。
  4. 如果需要使用索引进行连接,可以将left_indexright_index设置为True。
  5. validate参数可以用来检查合并的逻辑是否正确,确保数据的一致性。
相关推荐
EnglishJun4 小时前
Linux系统编程(二)---学习Linux系统函数
linux·运维·学习
im_AMBER4 小时前
Leetcode 115 分割链表 | 随机链表的复制
数据结构·学习·算法·leetcode
databook4 小时前
像搭积木一样思考:数据科学中的“自下而上”之道
python·数据挖掘·数据分析
luoluoal4 小时前
基于python的医疗问句中的实体识别算法的研究(源码+文档)
python·mysql·django·毕业设计·源码
啊阿狸不会拉杆5 小时前
《机器学习导论》第 9 章-决策树
人工智能·python·算法·决策树·机器学习·数据挖掘·剪枝
喵手5 小时前
Python爬虫实战:城市停车收费标准自动化采集系统 - 让停车费透明化的技术实践(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·城市停车收费标准·采集城市停车收费数据·采集停车数据csv文件导出
无水先生5 小时前
python函数的参数管理(01)*args和**kwargs
开发语言·python
py小王子5 小时前
dy评论数据爬取实战:基于DrissionPage的自动化采集方案
大数据·开发语言·python·毕业设计
Pyeako5 小时前
opencv计算机视觉--LBPH&EigenFace&FisherFace人脸识别
人工智能·python·opencv·计算机视觉·lbph·eigenface·fisherface
小陶的学习笔记5 小时前
python~基础
开发语言·python·学习