一文搞懂Python中Pandas数据合并

yizhihongxing

我来为你详细讲解一下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 实现将某一列设置为str类型

    实现将某一列设置为str类型需要使用Pandas库中的DataFrame,下面是实现该任务的详细攻略: 第一步: 导入Pandas库 import pandas as pd 第二步:读入数据集 df = pd.read_csv(‘data.csv’) 第三步:将某一列设置为字符串类型 df[‘column_name’] = df[‘column_name’]…

    python 2023年6月13日
    00
  • Pandas实现数据类型转换的一些小技巧汇总

    Pandas实现数据类型转换的一些小技巧汇总 在数据处理过程中,无论是数据读取还是数据清洗都需要将不同数据类型的内容进行转换,这是数据处理中非常基本的操作之一。Pandas提供了非常便捷且多样化的数据类型转换方式,下文将总结一些小技巧供大家参考使用。 1. astype()方法 Pandas提供了astype()方法,该方法可直接将数据类型进行转换,并返回一…

    python 2023年5月14日
    00
  • pandas计算最大连续间隔的方法

    下面是针对“pandas计算最大连续间隔的方法”的攻略: 步骤一:导入pandas和numpy库 要使用pandas计算最大连续间隔,首先需要导入必要的库。使用以下代码导入pandas和numpy库: import pandas as pd import numpy as np 步骤二:创建示例数据集 为了演示如何计算最大连续间隔,我们需要创建一个示例数据集…

    python 2023年6月13日
    00
  • Pandas 拼接(concat)

    当我们需要将两个Pandas DataFrame对象合并为一个时,就需要使用Pandas拼接函数。合并的方式可以是简单的竖直合并(即按行连接)或水平合并(即按列连接),也可以是更复杂的合并方式。下面,我将详细讲解Pandas拼接函数的使用方法。 1. 竖直合并(行连接) 要将两个DataFrame对象按垂直方向合并(即按行连接),我们可以使用Pandas的c…

    python-answer 2023年3月27日
    00
  • Pandas Query方法使用深度总结

    下面我来为大家详细讲解“Pandas Query方法使用深度总结”。 什么是Pandas Query方法 Pandas是一个用于数据分析和处理的Python库,其中的DataFrame数据结构是其中的关键组件之一。Pandas提供了许多方法用于对DataFrame进行数据查询、过滤和操作,其中的query()方法是其中的一种工具,可以用来进行数据查询和过滤。…

    python 2023年5月14日
    00
  • pandas.DataFrame.drop_duplicates 用法介绍

    pandas.DataFrame.drop_duplicates用法介绍 介绍 pandas.DataFrame.drop_duplicates()方法返回一个DataFrame,其中包含DataFrame重复行的条目。在数据处理中,通常需要删除重复的行,以保证数据的一致性和准确性。 语法 DataFrame.drop_duplicates(subset=N…

    python 2023年5月14日
    00
  • Pandas是什么?Pandas的特点与优势

    Pandas 是一个开源的第三方 Python 库,从 Numpy 和 Matplotlib 的基础上构建而来,享有数据分析“三剑客之一”的盛名(NumPy、Matplotlib、Pandas)。目前,Pandas 已经成为 Python 数据分析的必备高级工具,它的目标是成为强大、灵活、可以支持任何编程语言的数据分析工具。 Pandas 最初由 Wes M…

    2023年3月4日
    00
  • 利用Pandas读取文件路径或文件名称包含中文的csv文件方法

    Pandas是一个用于数据分析和处理的Python库。在实际的工作中,我们经常需要读取中文文件路径或文件名称包含中文的CSV文件。由于中文字符的编码问题,可能会导致读取文件失败,因此需要采取一些特殊的措施。以下是利用Pandas读取文件路径或文件名称包含中文的CSV文件的攻略: 1. 手动设置编码格式 Pandas读取CSV文件时默认的编码为utf-8,如果…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部