You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python Pandas合并customer_orders与order_products两个DataFrame?

如何使用Pandas合并两个DataFrame(结合customer_orders示例)

首先先确认你提供的customer_orders DataFrame,我把它的代码和结构再列出来方便参考:

import pandas as pd

customer_orders = pd.DataFrame(
    {'customerID': [1, 2, 2, 1], 
     'customerName': ['John', 'Anna', 'Anna', 'John'], 
     'customerAge': [21, 45, 45, 21], 
     'orderID': [255, 256, 257, 258], 
     'paymentType': ['visa', 'bank', 'master', 'paypal']}
)

它的结构如下:

customerAge customerID customerName orderID paymentType
0 21 1 John 255 visa
1 45 2 Anna 256 bank
2 45 2 Anna 257 master
3 21 1 John 258 paypal

接下来我假设你的order_products是包含订单对应产品信息的DataFrame,先构造一个贴近业务场景的示例:

order_products = pd.DataFrame(
    {'orderID': [255, 256, 257, 259], 
     'productName': ['Laptop', 'Phone', 'Tablet', 'Headphones'], 
     'quantity': [1, 2, 1, 3]}
)

现在可以用Pandas的merge()函数来合并这两个DataFrame,核心是找到关联键(这里是orderID),再根据需求选择合适的合并类型。


1. 内连接(Inner Join)

这是默认的合并方式,只保留两个DataFrame中关联键都存在的行:

merged_inner = pd.merge(customer_orders, order_products, on='orderID')

结果只会包含orderID为255、256、257的行——因为259在customer_orders里不存在,258在order_products里不存在,都会被过滤掉。

2. 左连接(Left Join)

保留左表(这里是customer_orders)的所有行,右表(order_products)中匹配的行会被合并,没有匹配的列会填充NaN:

merged_left = pd.merge(customer_orders, order_products, on='orderID', how='left')

结果里会保留orderID=258的行,对应的productName和quantity列会显示NaN。

3. 右连接(Right Join)

和左连接逻辑相反,保留右表(order_products)的所有行,左表中没有匹配的列填充NaN:

merged_right = pd.merge(customer_orders, order_products, on='orderID', how='right')

结果里会保留orderID=259的行,对应的客户相关列(比如customerName、customerAge)都会显示NaN。

4. 外连接(Outer Join)

保留两个DataFrame的所有行,没有匹配的列统一用NaN填充:

merged_outer = pd.merge(customer_orders, order_products, on='orderID', how='outer')

结果会包含所有5个orderID(255、256、257、258、259),缺失数据的位置都会用NaN补全。


额外实用技巧

  • 如果两个表的关联键名称不一样,可以用left_on和right_on分别指定,比如左表是order_id、右表是orderID,写法为:pd.merge(df1, df2, left_on='order_id', right_on='orderID')
  • 如果需要按多个键合并,只需把on的值改成列表即可,比如on=['customerID', 'orderID'](适合需要同时匹配客户和订单的场景)

内容的提问来源于stack exchange,提问作者lordy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:27:08