一文搞懂Python中Pandas数据合并

我来为你详细讲解一下Python中Pandas数据合并的攻略。

1. 简介

Pandas是一个Python第三方库,提供了一种高效、便捷的数据处理工具,常用于数据清洗、分析和可视化。数据合并是数据处理过程中的常见操作之一,Pandas提供了多种数据合并手段,具体如下:

  • concat:可以将两个或多个DataFrame对象进行简单的连接操作;
  • merge:可以根据一列或多列进行连接操作;
  • join:可以根据DataFrame的索引进行连接操作。

2. concat操作

concat操作可以将两个或多个DataFrame对象沿着某个轴进行简单的连接操作,语法如下:

pd.concat(objs, axis=0, ignore_index=False)
  • objs:需要连接的DataFrame对象,可以是列表、字典或Series对象;
  • axis:连接的轴方向,0表示纵向,1表示横向,默认为0;
  • ignore_index:是否忽略原来的索引,重置索引,默认为False。

示例1:纵向连接

假设我们有两个DataFrame对象df1和df2,如下所示:

df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
                    'B': ['B0', 'B1', 'B2', 'B3'],
                    'C': ['C0', 'C1', 'C2', 'C3'],
                    'D': ['D0', 'D1', 'D2', 'D3']})
df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
                    'B': ['B4', 'B5', 'B6', 'B7'],
                    'C': ['C4', 'C5', 'C6', 'C7'],
                    'D': ['D4', 'D5', 'D6', 'D7']})

我们可以使用concat将它们沿着纵向进行连接:

df3 = pd.concat([df1, df2], axis=0, ignore_index=True)
print(df3)

输出结果为:

    A   B   C   D
0  A0  B0  C0  D0
1  A1  B1  C1  D1
2  A2  B2  C2  D2
3  A3  B3  C3  D3
4  A4  B4  C4  D4
5  A5  B5  C5  D5
6  A6  B6  C6  D6
7  A7  B7  C7  D7

示例2:横向连接

假设我们有两个DataFrame对象df1和df2,如下所示:

df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
                    'B': ['B0', 'B1', 'B2', 'B3']})
df2 = pd.DataFrame({'C': ['C0', 'C1', 'C2', 'C3'],
                    'D': ['D0', 'D1', 'D2', 'D3']})

我们可以使用concat将它们沿着横向进行连接:

df3 = pd.concat([df1, df2], axis=1)
print(df3)

输出结果为:

    A   B   C   D
0  A0  B0  C0  D0
1  A1  B1  C1  D1
2  A2  B2  C2  D2
3  A3  B3  C3  D3

3. merge操作

merge操作可以根据一列或多列进行连接操作,语法如下:

pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False)
  • left:左侧的DataFrame对象;
  • right:右侧的DataFrame对象;
  • how:连接方式,包括'left'、'right'、'outer'、'inner',默认为'inner';
  • on:连接的列名,如果左右两个DataFrame的列名不同,需要分别指定;
  • left_on:左侧的连接列名;
  • right_on:右侧的连接列名;
  • left_index:是否使用左侧的索引作为连接键;
  • right_index:是否使用右侧的索引作为连接键。

示例3:基于一列进行连接

假设我们有两个DataFrame对象df1和df2,如下所示:

df1 = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                    'A': ['A0', 'A1', 'A2', 'A3'],
                    'B': ['B0', 'B1', 'B2', 'B3']})
df2 = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                    'C': ['C0', 'C1', 'C2', 'C3'],
                    'D': ['D0', 'D1', 'D2', 'D3']})

我们可以使用merge将它们基于key列进行连接:

df3 = pd.merge(df1, df2, on='key')
print(df3)

输出结果为:

  key   A   B   C   D
0  K0  A0  B0  C0  D0
1  K1  A1  B1  C1  D1
2  K2  A2  B2  C2  D2
3  K3  A3  B3  C3  D3

示例4:基于多列进行连接

假设我们有两个DataFrame对象df1和df2,如下所示:

df1 = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'],
                    'key2': ['K0', 'K1', 'K0', 'K1'],
                    'A': ['A0', 'A1', 'A2', 'A3'],
                    'B': ['B0', 'B1', 'B2', 'B3']})
df2 = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],
                    'key2': ['K0', 'K0', 'K0', 'K0'],
                    'C': ['C0', 'C1', 'C2', 'C3'],
                    'D': ['D0', 'D1', 'D2', 'D3']})

我们可以使用merge将它们基于key1和key2两列进行连接:

df3 = pd.merge(df1, df2, on=['key1', 'key2'])
print(df3)

输出结果为:

  key1 key2   A   B   C   D
0   K0   K0  A0  B0  C0  D0
1   K1   K0  A2  B2  C1  D1
2   K1   K0  A2  B2  C2  D2
3   K2   K1  A3  B3  C3  D3

4. join操作

join操作可以根据DataFrame的索引进行连接操作,语法如下:

left.join(right, how='outer')
  • left:左侧的DataFrame对象;
  • right:右侧的DataFrame对象;
  • how:连接方式,包括'left'、'right'、'outer'、'inner',默认为'outer'。

示例5:基于索引进行连接

假设我们有两个DataFrame对象df1和df2,如下所示:

df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
                    'B': ['B0', 'B1', 'B2', 'B3']},
                    index=['K0', 'K1', 'K2', 'K3'])
df2 = pd.DataFrame({'C': ['C0', 'C1', 'C2', 'C3'],
                    'D': ['D0', 'D1', 'D2', 'D3']},
                    index=['K0', 'K1', 'K2', 'K3'])

我们可以使用join将它们基于索引进行连接:

df3 = df1.join(df2)
print(df3)

输出结果为:

     A   B   C   D
K0  A0  B0  C0  D0
K1  A1  B1  C1  D1
K2  A2  B2  C2  D2
K3  A3  B3  C3  D3

以上就是Python中Pandas数据合并的完整攻略。希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一文搞懂Python中Pandas数据合并 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • python中isoweekday和weekday的区别及说明

    当我们使用Python中的datetime模块进行日期处理时,常常会用到weekday()和isoweekday()两个函数。虽然这两个函数都可以用于获取日期是一周中的星期几,但是它们之间确实有些区别。下面我们就来详细讲解一下它们的区别及说明。 weekday()函数 weekday()函数返回日期值是星期几,其中星期一为0,星期日为6。以下是weekday…

    python 2023年5月14日
    00
  • Pandas 模糊查询与替换的操作

    Pandas是一个功能强大的Python数据分析库,用于处理和分析数据,提供了大量的数据操作、数据分析和数据可视化的功能。在数据分析中,经常需要进行模糊查询与替换的操作,这篇文章将详细介绍Pandas模糊查询与替换的操作攻略,包括以下内容: Pandas 模糊查询的操作方式: 使用 Pandas 进行模糊查询可以使用字符串的 str 方法,包括str.mat…

    python 2023年5月14日
    00
  • 如何使用Pandas显示数据框架的所有行

    使用Pandas显示数据框架的所有行的步骤如下: 步骤1:导入Pandas库 首先,我们需要导入Pandas库。可以使用以下命令完成导入: import pandas as pd 步骤2:加载数据集 接下来,我们需要加载数据集。我们可以使用Pandas库中的read_csv函数加载CSV格式的数据集。以下是使用read_csv函数加载数据集的示例代码: da…

    python-answer 2023年3月27日
    00
  • 如何计算Pandas数据框架列的不同值

    计算Pandas数据框中某一列的不同值,可以使用Pandas库中的nunique()函数。nunique()函数会针对指定的列返回该列中不同元素的数量。 具体操作步骤如下: 导入Pandas库 import pandas as pd 创建数据框 为了说明,我们这里创建一个名为df的数据框,包含3列数据。 df = pd.DataFrame({‘name’: …

    python-answer 2023年3月27日
    00
  • 如何在Pandas数据框架中减去两列

    可以通过Pandas的数据框架中的列进行数学运算,例如减法。 以下是在Pandas数据框架中减去两列的完整攻略: 导入Pandas模块并读取数据 “`python import pandas as pd # 读取数据文件 df = pd.read_csv(‘example.csv’) “` 确定要减去的两列 python # 假设我们要减去’salary…

    python-answer 2023年3月27日
    00
  • Python使用Missingno库可视化缺失值(NaN)值

    当我们处理数据时,经常会遇到缺失值(NaN)的情况。了解数据缺失值的情况很重要,因为这会影响我们对数据的分析和建模。Python的Missingno库提供了一种简单而有效的方式来查看缺失值的分布情况。 Missingno库提供了以下几种方式来可视化缺失值: 矩阵图(Matrix) 矩阵图是Missingno库最常用的一种可视化方式。它显示了数据集中所有变量的…

    python-answer 2023年3月27日
    00
  • python时间日期函数与利用pandas进行时间序列处理详解

    Python时间日期函数与利用Pandas进行时间序列处理攻略 简介 时间和日期在编程中是一个非常重要的概念,特别是涉及到实时数据和对数据进行时间序列分析时。 Python提供了丰富的时间和日期函数,这个攻略将深入介绍Python的时间和日期函数,并说明如何使用Pandas进行时间序列处理。 时间和日期表示 在Python中,时间和日期都可以使用dateti…

    python 2023年5月14日
    00
  • 在Pandas数据框架中,将列的第一个字母大写

    在Pandas数据框架中,将列的第一个字母大写,可以通过以下步骤实现: 导入 Pandas 模块: pythonimport pandas as pd 创建包含数据的数据框 DataFrame: “`pythondata = {‘name’: [‘tom’, ‘jack’, ‘steve’, ‘ricky’], ‘age’: [28, 34, 29, 42…

    python-answer 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部