网站优化

网站优化

Products

当前位置:首页 > 网站优化 >

如何使用Pandas实现两个数据表的完全连接操作?

GG网络技术分享 2025-10-27 18:17 20


Pandas 是一个有力巨大且灵活的工具。本文将深厚入探讨怎么利用 Pandas 实现两个数据表的彻头彻尾连接操作,让你的数据处理干活更加高大效和准确。

先说说让我们来看一个轻巧松的例子。虚假设你有一个订单表和一个退货表,你需要根据客户的ID和订单日期来合并这两个表。下面是用 Pandas 的 merge 函数进行连接的示例代码:

import pandas as pd
orders = pd.DataFrame({
    'order_id': ,
    'customer_id': ,
    'order_date': ,
    'order_value': 
})
returns = pd.DataFrame({
    'return_id': ,
    'customer_id': ,
    'return_date': ,
    'return_reason': 
})
merged_data = pd.merge
print

输出后来啊如下:

  order_id customer_id  order_date  order_value return_id return_date return_reason
0         2           B  2021-01-02      150        7  2021-01-06            Too big
1         3           C  2021-01-03      200        NaN         NaN               NaN
2         4           D  2021-01-04      250        8  2021-01-08        Wrong color
3         5           E  2021-01-05      300        6  2021-01-06          Defective

如你所见,订单表和退货表已经根据指定的列成功合并。

连接方式详解

在 Pandas 中, 合并数据表有许多种连接方式,包括内连接、左连接、右连接和外连接。

内连接

内连接只保留两个表中都有匹配的行。

import pandas as pd
orders = pd.DataFrame({
    'order_id': ,
    'customer_id': ,
    'order_date': ,
    'order_value': 
})
returns = pd.DataFrame({
    'return_id': ,
    'customer_id': ,
    'return_date': ,
    'return_reason': 
})
merged_data = pd.merge
print
  order_id customer_id  order_date  order_value return_id return_date return_reason
0         2           B  2021-01-02      150        7  2021-01-06            Too big
1         4           D  2021-01-04      250        8  2021-01-08        Wrong color
2         5           E  2021-01-05      300        6  2021-01-06          Defective

如你所见,只有那些个一边出眼下两个表中的订单和退货信息被保留。

左连接

左连接保留左表的全部行,即使在右表中没有匹配的行。

import pandas as pd
orders = pd.DataFrame({
    'order_id': ,
    'customer_id': ,
    'order_date': ,
    'order_value': 
})
returns = pd.DataFrame({
    'return_id': ,
    'customer_id': ,
    'return_date': ,
    'return_reason': 
})
merged_data = pd.merge
print
  order_id customer_id  order_date  order_value return_id return_date return_reason
0         1           A  2021-01-01      100        NaN         NaN               NaN
1         2           B  2021-01-02      150        7  2021-01-06            Too big
2         3           C  2021-01-03      200        NaN         NaN               NaN
3         4           D  2021-01-04      250        8  2021-01-08        Wrong color
4         5           E  2021-01-05      300        6  2021-01-06          Defective

如你所见, 左表中的全部行都被保留,即使它们在右表中没有匹配的行。

右连接

import pandas as pd
orders = pd.DataFrame({
    'order_id': ,
    'customer_id': ,
    'order_date': ,
    'order_value': 
})
returns = pd.DataFrame({
    'return_id': ,
    'customer_id': ,
    'return_date': ,
    'return_reason': 
})
merged_data = pd.merge
print
  order_id customer_id  order_date  order_value return_id return_date return_reason
0         1           A  2021-01-01      100        NaN         NaN               NaN
1         2           B  2021-01-02      150        7  2021-01-06            Too big
2         3           C  2021-01-03      200        NaN         NaN               NaN
3         4           D  2021-01-04      250        8  2021-01-08        Wrong color
4         5           E  2021-01-05      300        6  2021-01-06          Defective
5         NaN           NaN         NaN        6  2021-01-06          Defective
6         NaN           NaN         NaN        7  2021-01-07          Too big
7         NaN           NaN         NaN        8  2021-01-08        Wrong color

外连接

import pandas as pd
orders = pd.DataFrame({
    'order_id': ,
    'customer_id': ,
    'order_date': ,
    'order_value': 
})
returns = pd.DataFrame({
    'return_id': ,
    'customer_id': ,
    'return_date': ,
    'return_reason': 
})
merged_data = pd.merge
print
  order_id customer_id  order_date  order_value return_id return_date return_reason
0         1           A  2021-01-01      100        NaN         NaN               NaN
1         2           B  2021-01-02      150        7  2021-01-06            Too big
2         3           C  2021-01-03      200        NaN         NaN               NaN
3         4           D  2021-01-04      250        8  2021-01-08        Wrong color
4         5           E  2021-01-05      300        6  2021-01-06          Defective
5         NaN           NaN         NaN        6  2021-01-06          Defective
6         NaN           NaN         NaN        7  2021-01-07          Too big
7         NaN           NaN         NaN        8  2021-01-08        Wrong color

如你所见, 外连接保留了两个表的全部行,即使它们在另一个表中没有匹配的行。

许多列连接

在有些情况下你兴许需要用优良几个列作为连接键。

import pandas as pd
orders = pd.DataFrame({
    'order_id': ,
    'customer_id': ,
    'order_date': ,
    'order_value': 
})
returns = pd.DataFrame({
    'return_id': ,
    'customer_id': ,
    'return_date': ,
    'return_reason': 
})
merged_data = pd.merge
print
  order_id customer_id  order_date  order_value return_id return_date return_reason
0         2           B  2021-01-02      150        7  2021-01-06            Too big
1         4           D  2021-01-04      250        8  2021-01-08        Wrong color
2         5           E  2021-01-05      300        6  2021-01-06          Defective

如你所见,许多列连接能根据需要灵活用。

用 Pandas 连接数据表是一种有力巨大而灵活的数据处理手艺。通过用不同的连接方式,你能根据具体需求选择合适的合并策略。无论你是处理轻巧松还是麻烦的数据集,Pandas 都能为你给所需的工具。

在本文中, 我们探讨了怎么用 Pandas 实现两个数据表的彻头彻尾连接操作,包括内连接、左连接、右连接和外连接等。通过这些个连接方式,你能轻巧松地将不同的数据集合并成一个,以便进行更深厚入的数据琢磨和操作。

希望这篇文章能帮你更优良地搞懂 Pandas 的连接功能。如果你有随便哪个疑问或觉得能,请随时在评论区留言。欢迎用实际体验验证观点。

标签:

提交需求或反馈

Demand feedback