Pandas 在多列上左外连接多个数据帧

pandas

1个回答

写回答

Emily_1212

2025-06-25 09:00

+ 关注

Pandas
Pandas

在数据分析和处理领域,Pandas是一个非常强大的Python库。它提供了丰富的函数和方法,使得数据的操作变得更加简单和高效。其中之一的功能是在多列上进行左外连接(Left Outer Join)多个数据帧。在本文中,我们将探讨如何使用Pandas进行多个数据帧的左外连接,并提供相关的案例代码。

左外连接是什么?

左外连接是一种常见的数据操作,用于合并两个或多个数据集。在左外连接中,我们将基于一个或多个键(列)将两个数据帧进行合并,并且结果数据帧包含所有左侧数据帧的行,以及右侧数据帧中与左侧数据帧键匹配的行。

案例背景

为了更好地理解多列上左外连接的概念,我们假设有两个数据帧,分别是"orders"和"customers"。"orders"数据帧包含了订单的信息,包括订单号、产品名称和订单日期;"customers"数据帧包含了客户的信息,包括客户编号、客户姓名和客户地址。我们的目标是将这两个数据帧基于订单号和客户编号进行左外连接,以便获得包含订单和客户信息的新数据帧。

代码实现

首先,我们需要导入Pandas库,并创建两个数据帧"orders"和"customers"。

Python

import Pandas as pd

# 创建orders数据帧

orders = pd.DataFrame({

'order_no': [1, 2, 3, 4, 5],

'product_name': ['A', 'B', 'C', 'D', 'E'],

'order_date': ['2021-01-01', '2021-02-01', '2021-03-01', '2021-04-01', '2021-05-01']

})

# 创建customers数据帧

customers = pd.DataFrame({

'customer_no': [1, 2, 3, 4, 6],

'customer_name': ['John', 'Amy', 'David', 'Lisa', 'Emma'],

'customer_address': ['New York', 'London', 'Paris', 'Tokyo', 'Sydney']

})

接下来,我们使用Pandas的"merge"函数进行左外连接。我们将"orders"和"customers"作为参数,并指定左侧和右侧数据帧的连接键(列)。

Python

# 在多列上进行左外连接

result = pd.merge(orders, customers, left_on='order_no', right_on='customer_no', how='left')

在上述代码中,我们使用"left_on"参数指定左侧数据帧的连接键为"order_no"列,"right_on"参数指定右侧数据帧的连接键为"customer_no"列。同时,我们使用"how"参数指定连接方式为左外连接("left")。

最后,我们可以通过打印结果数据帧来查看左外连接的结果。

Python

print(result)

运行上述代码后,我们将获得以下结果:

order_no product_name order_date customer_no customer_name customer_address

0 1 A 2021-01-01 1.0 John New York

1 2 B 2021-02-01 2.0 Amy London

2 3 C 2021-03-01 3.0 David Paris

3 4 D 2021-04-01 4.0 Lisa Tokyo

4 5 E 2021-05-01 NaN NaN NaN

从结果中可以看出,左外连接的结果数据帧包含了所有"orders"数据帧的行,并且根据订单号匹配了相应的客户信息。如果某个订单没有匹配到对应的客户信息,将填充为NaN。

本文介绍了在多列上使用Pandas进行左外连接的方法,并给出了一个简单的案例来说明这个过程。通过左外连接,我们可以方便地合并多个数据帧,以便进行更复杂的数据分析和处理。使用Pandas提供的强大功能,我们可以在数据领域更加高效地工作。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号