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

yizhihongxing

下面我将详细讲解“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 实现 in 和 not in 的用法及使用心得

    下面是“pandas 实现 in 和 not in 的用法及使用心得”的完整攻略: 1. in 和 not in 的基本语法 在 Pandas 中,我们可以使用“in”和“not in”来判断某个元素是否在一个 Series 或 DataFrame 中。具体的基本语法如下: # Series 中判断元素是否在其中 element in my_series e…

    python 2023年5月14日
    00
  • 在Python中使用pandas.DataFrame.to_stata()函数导出DTA文件

    当我们拥有一个用pandas DataFrame类型表示的数据集时,我们可以使用to_stata()函数来将其导出为DTA文件。下面就是使用pandas.DataFrame.to_stata()函数导出DTA文件的完整攻略: 第一步:导入必要的库 import pandas as pd 第二步:生成DataFrame数据 我们使用一个具有以下列名的模拟数据。…

    python-answer 2023年3月27日
    00
  • Pandas之Fillna填充缺失数据的方法

    下面是Pandas之Fillna填充缺失数据的方法的完整攻略。 概述 在数据分析和处理中,经常会遇到缺失数据的情况。Pandas提供了很多方法来处理缺失数据,其中之一就是Fillna填充缺失数据的方法。 Fillna方法可以用指定值、前向或后向填充的方法来填充缺失数据,可以适用于Series和DataFrame对象,相对来说比较灵活。 Fillna方法的常用…

    python 2023年5月14日
    00
  • 从Pandas DataFrame中获取列标题列表

    获取Pandas DataFrame中的列标题列表可以使用.columns属性。下面是完整的攻略: 步骤一:导入Pandas库 在代码之前,需要先导入Pandas库。使用以下代码进行导入: import pandas as pd 步骤二:创建DataFrame 为了演示如何获取Pandas DataFrame中的列标题列表,需要先创建一个DataFrame。…

    python-answer 2023年3月27日
    00
  • C语言实现数组移位、前移、后移与整体移动实例代码

    C语言实现数组移位、前移、后移与整体移动实例代码攻略 在C语言中,数组移位是指将数组中的元素向左或向右移动任意个单位的操作,可以实现数组的前移和后移,移位操作在处理数组问题时非常常见。本文将介绍如何使用C语言实现数组移位、前移、后移与整体移动,包含详细的代码实现和示例说明。 数组移位原理简介 在C语言中,数组的移位可以通过循环遍历数组实现。以将数组元素向右移…

    python 2023年5月14日
    00
  • 如何在Python中对CSV进行多列排序

    可以使用Python的内置库csv和operator来对CSV进行多列排序。 首先,我们需要读取CSV文件并将其转换为list对象: import csv with open(‘data.csv’, ‘r’) as file: reader = csv.reader(file) data = list(reader) 接下来,我们可以使用sorted()函数…

    python-answer 2023年3月27日
    00
  • 如何将TSV文件加载到Pandas DataFrame中

    加载TSV(Tab Separated Values,以制表符分隔的值)文件到Pandas DataFrame中的过程十分简单。下面是完整的攻略: 导入需要的库 在加载TSV文件之前,需要先导入需要的库,包括pandas库和numpy库。可以使用以下代码进行导入: import pandas as pd import numpy as np 读取TSV文件 …

    python-answer 2023年3月27日
    00
  • 使用csv模块在Pandas中读取数据

    在Pandas中,可以使用csv模块中的read_csv()函数读取csv文件中的数据。read_csv()能够自动识别文件中的数据类型,例如日期、数字等,并且还能够处理缺失值。 以下是使用csv模块在Pandas中读取数据的详细步骤: 导入所需的库和模块 import pandas as pd 使用read_csv()函数读取csv文件。这个函数的基本语法…

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