一文搞懂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日

相关文章

  • 从Pandas DataFrame中删除一列

    当我们需要从Pandas DataFrame中删除一列时,可以使用drop()方法。下面是完整的攻略: 1. 案例介绍 我们有一个包含学生信息的DataFrame,其中包含学生的姓名、年龄、性别和成绩四个字段。现在我们需要删除成绩一列。 import pandas as pd data = {"姓名":["张三",&q…

    python-answer 2023年3月27日
    00
  • pandas实现数据读取&清洗&分析的项目实践

    Pandas实现数据读取、清洗、分析的项目实践 Pandas是基于Python的一款高效数据处理库,可以完成多种数据处理操作,如读取数据、清洗数据、分析数据等。在数据科学领域和商业数据分析中广泛应用。本文将介绍Pandas实现数据读取、清洗、分析的完整攻略,包括数据读取、数据清洗、数据分析等三个步骤。 数据读取 数据读取是数据处理的第一步,Pandas提供了…

    python 2023年5月14日
    00
  • 如何使用Pandas在Python中创建透视表

    创建透视表是Pandas中非常强大和实用的功能之一。下面是使用Pandas在Python中创建透视表的完整攻略。我们将通过以下步骤来完成: 1.了解透视表的基本概念和用途。2.准备数据。3.创建透视表。4.对透视表进行操作和查询。 1.了解透视表的基本概念和用途。 透视表是一种数据汇总工具,可以快速地将大量的数据汇总并生成表格。常常用于数据分析和报表生成。在…

    python-answer 2023年3月27日
    00
  • pandas如何处理缺失值

    当我们处理数据时,经常会遇到数据缺失的情况,而pandas是一个强大的数据处理工具,提供了多种处理缺失值的方法。 处理缺失值的方法 pandas提供了三种处理缺失值的方法,分别是: 1. 删除缺失值 使用dropna()方法可以删除包含缺失值的行或列。例如: import pandas as pd import numpy as np df = pd.Dat…

    python 2023年5月14日
    00
  • 如何在Pandas数据框架中把浮点数转换成字符串

    在 Pandas 数据框架中,我们可以通过 astype() 方法将浮点数转换为字符串。具体步骤如下: 导入 Pandas 库,并创建一个 DataFrame,用于演示示例。我们先创建一个包含浮点数的 DataFrame。 import pandas as pd # 创建一个包含浮点数的 DataFrame df = pd.DataFrame({‘A’: […

    python-answer 2023年3月27日
    00
  • 在Pandas中处理缺失的数据

    在Pandas中,处理缺失的数据是一个常见的任务,主要有以下几种处理方式: 删除缺失数据 填充缺失数据 插值缺失数据 下面我们分别介绍这三种处理方式的使用方法和具体实例。 1. 删除缺失数据 要删除缺失数据,可以使用 dropna() 方法。该方法默认丢弃任何缺失值,可以通过选项进行修改。 import pandas as pd import numpy a…

    python-answer 2023年3月27日
    00
  • 如何在Pandas中添加组级汇总统计作为一个新的列

    在Pandas中,可以使用groupby方法对数据进行分组并对每个组应用一些聚合函数,例如sum、mean、max等。有时候,我们想要添加组级汇总统计作为一个新的列,以便更好地了解每个组的情况。下面是在Pandas中添加组级汇总统计作为一个新的列的详细攻略: 1. 读取数据并进行分组 首先,我们需要读取数据并进行分组。这里我们使用Pandas自带的titan…

    python-answer 2023年3月27日
    00
  • 如何在Pandas数据框架中计算MOVING AVERAGE

    计算MOVING AVERAGE(移动平均)是Pandas使用频率非常高的一个操作,可以用来平滑数据、去除噪声等。下面是在Pandas数据框架中计算MOVING AVERAGE的完整攻略。 加载数据:首先需要导入Pandas库,并使用Pandas的read_csv函数加载数据。 import pandas as pd data = pd.read_csv(&…

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