Python Pandas中合并数据的5个函数使用详解

下面我将详细讲解“Python Pandas中合并数据的5个函数使用详解”的完整攻略。

简介

在数据处理中,我们常常需要将不同来源的数据合并在一起,以方便分析和处理。在Python Pandas中,有很多种方法可以达到这个目的,其中比较常用的有以下5个函数:

  1. pd.concat() : 在行或列上拼接两个或多个DataFrame或Series
  2. df.append() : 在DataFrame末尾添加一行或多行
  3. df.join() : 根据某个或多个列的值进行连接(类似于SQL中的JOIN操作)
  4. df.merge() : 根据某个或多个列的值进行连接(类似于SQL中的JOIN操作)
  5. pd.merge() : 根据某个或多个列的值进行连接(类似于SQL中的JOIN操作)

在本篇攻略中,我们将详细介绍这5个函数的用法。

1. pd.concat()

pd.concat() 可以在行或列上拼接两个或多个 DataFrame 或 Series。其常用的参数有以下几个:

  • objs : 必填参数,表示要拼接的两个或多个DataFrame或Series
  • axis : 拼接的维度,0表示按列拼接,1表示按行拼接
  • join : 连接方式,默认为outer,表示取并集,也可以取交集(inner
  • ignore_index : 是否忽略原数据的index,并按照新的index生成一个新的DataFrame或Series
  • keys : 为拼接后的 DataFrame 或 Series 添加层级索引。可为字符串、列表或元组,在 0 轴拼接时生效

示例一:按列拼接两个DataFrame

import pandas as pd

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({'E': ['E4', 'E5', 'E6', 'E7'],
                    'F': ['F4', 'F5', 'F6', 'F7'],
                    'G': ['G4', 'G5', 'G6', 'G7'],
                    'H': ['H4', 'H5', 'H6', 'H7']})

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

print(result)

输出如下:

    A   B   C   D   E   F   G   H
0  A0  B0  C0  D0  E4  F4  G4  H4
1  A1  B1  C1  D1  E5  F5  G5  H5
2  A2  B2  C2  D2  E6  F6  G6  H6
3  A3  B3  C3  D3  E7  F7  G7  H7

示例二:按行拼接两个DataFrame

import pandas as pd

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']})

result = pd.concat([df1, df2], axis=0)

print(result)

输出如下:

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

2. df.append()

df.append() 可以在 DataFrame 末尾添加一行或多行数据,其常用的参数有以下几个:

  • other: 待添加的 DataFrame 或 Series
  • ignore_index: 是否忽略原有的行索引,并生成新的行索引
  • verify_integrity: 是否检查 DataFrame 中是否存在重复的行索引

示例:在DataFrame末尾添加一行数据

import pandas as pd

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

s = pd.Series(['E0', 'E1', 'E2', 'E3'], index=['A', 'B', 'C', 'D'])

result = df.append(s, ignore_index=True)

print(result)

输出如下:

    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  E0  E1  E2  E3

3. df.join()

df.join() 可以根据某个或多个列的值进行连接(类似于SQL中的JOIN操作)。比如,我们可以连接一张表的订单号和另一张表的商品名称,得到两者的详细信息。其常用的参数有以下几个:

  • other : 待连接的 DataFrame 或 Series
  • on : 连接的列名称或多个列名称(列表),默认为None,表示将使用两个DataFrame的相同列进行连接
  • how : 连接方式,默认为'left',可选的有'inner'、'outer'和'right'
  • lsuffix : 当出现列名冲突时,给左侧DataFrame的列名添加的后缀
  • rsuffix : 当出现列名冲突时,给右侧DataFrame的列名添加的后缀

示例:根据某列连接两个DataFrame

import pandas as pd

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

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

result = df1.join(df2.set_index('key'), on='key', lsuffix='_left', rsuffix='_right')

print(result)

输出如下:

  key  value_left  value_right
0   A           1          NaN
1   B           2          5.0
2   C           3          NaN
3   D           4          6.0

4. df.merge()

df.merge() 可以根据某个或多个列的值进行连接,也类似于SQL中的JOIN操作。与 df.join() 的区别在于,df.merge() 可以指定连接列的名字不同,而 df.join() 要求连接列的名字相同。其常用的参数有以下几个:

  • right : 待连接的 DataFrame
  • on : 连接的列名称或多个列名称(列表),默认为None,表示将使用两个DataFrame的相同列进行连接
  • how : 连接方式,默认为'inner',可选的有'inner'、'outer'和'right'
  • left_on : 左侧DataFrame中连接列的名称
  • right_on : 右侧DataFrame中连接列的名称
  • suffixes : 当出现列名冲突时,给左侧DataFrame和右侧DataFrame的列名添加的后缀

示例:根据某列连接两个DataFrame

import pandas as pd

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

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

result = pd.merge(df1, df2, how='inner', left_on='key', right_on='key1')

print(result)

输出如下:

  key  value_x key1  value_y
0   B        2    B        5
1   D        4    D        6

5. pd.merge()

pd.merge() 同样可以根据某个或多个列的值进行连接(类似于SQL中的JOIN操作),其参数和 df.merge() 大部分相同。与 df.merge() 的区别在于,pd.merge() 是一个顶级函数,可以直接调用,而 df.merge() 是 DataFrame 对象上的方法。其常用的参数有以下几个:

  • left : 左侧 DataFrame
  • right : 右侧 DataFrame
  • on : 连接的列名称或多个列名称(列表),默认为None,表示将使用两个DataFrame的相同列进行连接
  • how : 连接方式,默认为'inner',可选的有'inner'、'outer'和'right'
  • left_on : 左侧DataFrame中连接列的名称
  • right_on : 右侧DataFrame中连接列的名称
  • suffixes : 当出现列名冲突时,给左侧DataFrame和右侧DataFrame的列名添加的后缀

示例:根据某列连接两个DataFrame

import pandas as pd

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

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

result = pd.merge(df1, df2, how='inner', left_on='key', right_on='key1')

print(result)

输出如下:

  key  value_x key1  value_y
0   B        2    B        5
1   D        4    D        6

至此,我们已经详细介绍了 "Python Pandas 中合并数据的5个函数使用详解"。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python Pandas中合并数据的5个函数使用详解 - Python技术站

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

相关文章

  • Pandas数据形状df.shape的实现

    Pandas是Python中广受欢迎的数据处理库之一,提供了许多强大的功能,df.shape是其中之一。该函数用于获取Pandas DataFrame中的行数和列数。 1.获取DataFrame的行数和列数 在Pandas中,使用”shape”函数可以轻松获取DataFrame的形状。例如,以下代码创建了一个4×3的DataFrame,并使用”shape”函…

    python 2023年5月14日
    00
  • 如何在Python中处理时间序列中的缺失值

    处理时间序列中的缺失值可以使用pandas库中的函数来实现,以下是具体步骤: 1.读取时间序列数据 首先需要使用pandas库中的read_csv函数读取时间序列数据文件,生成pandas的DataFrame对象。如果时间戳是该数据的索引,则需要使用index_col参数指定为时间戳的列名。例如: import pandas as pd df = pd.re…

    python-answer 2023年3月27日
    00
  • 如何使用Regex从给定的Pandas DataFrame的单词中删除重复的字符

    使用正则表达式(Regex)从 Pandas DataFrame 中删除重复字符的方法如下: 加载数据:首先使用 Pandas 加载需要处理的数据。假设我们有一个简单的 DataFrame,其中包含一列文本数据: import pandas as pd df = pd.DataFrame({ ‘text’: [‘aaabbbccc’, ‘dddd’, ‘ee…

    python-answer 2023年3月27日
    00
  • Python数据分析pandas模块用法实例详解

    Python数据分析pandas模块用法实例详解 介绍 本文将详细讲解Python中用于数据分析的pandas模块的用法和实例,并提供代码示例。 pandas是一个强大的Python数据分析工具,它能够帮助用户轻松地处理数据集和数据分析。 安装 在安装pandas之前,需要安装Python。如果你还没有安装Python,请先安装Python。然后,可以使用下…

    python 2023年5月14日
    00
  • pandas对指定列进行填充的方法

    当数据集中的某些列存在缺失值时,我们可以使用pandas库中的fillna()方法来填充缺失值。 把缺失值用指定值填充: import pandas as pd # 创建数据集 data = {‘A’: [1, 2, 3, None, 5, 6], ‘B’: [1, 2, None, 4, None, 6], ‘C’: [1, 2, 3, 4, 5, 6]}…

    python 2023年5月14日
    00
  • Python中的Pandas.DataFrame.hist()函数

    Pandas是基于Numpy库的另一个数据处理库,同时也是Python数据分析工具的一个重要组成部分。Pandas中的DataFrame对象提供.hist()函数,可以方便地绘制数据的直方图。 函数概述 DataFrame.hist(by=None,ax=None,grid=True,xlabelsize=None,ylabelsize=None,** kw…

    python-answer 2023年3月27日
    00
  • Python教程pandas数据分析去重复值

    以下是Python教程pandas数据分析去重复值的完整攻略。 pandas数据分析去重复值 Pandas数据框架简介 Pandas是一个Python库,提供数据分析功能。Pandas中最主要的数据结构是“DataFrame”,它是由多个列组成的二维表格。 在Pandas中,可以通过多种方式来创建DataFrame对象,比如从文件、从字典、从列表等等。一旦创…

    python 2023年5月14日
    00
  • 在Pandas DataFrame上创建视图

    创建视图可以让我们在使用 DataFrame 数据时更加方便地进行数据分析和处理。在 Pandas 中,我们可以通过以下步骤来创建视图: 首先导入 Pandas 库,并使用 Pandas 库中的 DataFrame 类创建一个数据表: “` import pandas as pd df = pd.DataFrame({ ‘name’: [‘Alice’, …

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