📌  相关文章
📜  pandas 合并查询“_merge='left_only'” - Python (1)

📅  最后修改于: 2023-12-03 14:45:03.656000             🧑  作者: Mango

Pandas 合并查询 "_merge='left_only'" - Python

在 Pandas 中,可以使用 merge() 函数来将两个数据集合并在一起。其中 _merge 参数可以控制如何处理没有匹配到的行。本文将介绍 _merge='left_only' 参数的用法。

什么是 _merge 参数?

将两个数据集合并在一起时,可能存在一个数据集中的行没有在另一个数据集中匹配到的情况。此时可以使用 _merge 参数来控制如何处理这些未匹配到的行。

_merge 参数有四个取值:

  • left_only: 对于左侧数据集中存在但右侧数据集中不存在的行,保留左侧数据集中的行,并在右侧数据集中相应的行填充 NaN 值。
  • right_only: 对于右侧数据集中存在但左侧数据集中不存在的行,保留右侧数据集中的行,并在左侧数据集中相应的行填充 NaN 值。
  • both: 对于左侧和右侧数据集中都存在的行,保留这些行,并合并左右两侧的数据。
  • none: 对于左侧和右侧数据集中都不存在的行,忽略这些行。

默认情况下,_merge 的取值为 both

如何使用 _merge='left_only' 参数

_merge='left_only' 时,merge() 函数将只保留左侧数据集中存在但右侧数据集中不存在的行。在右侧数据集中相应的行填充 NaN 值。

下面的示例代码演示了如何使用 _merge='left_only' 参数:

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

# 将两个数据集按 key 列合并,并使用 _merge='left_only' 参数
result = pd.merge(df1, df2, on='key', how='left', indicator=True)
result = result[result['_merge'] == 'left_only']

# 输出结果
print(result)

输出结果为:

  key  value_x  value_y     _merge
0   A        1     NaN  left_only
2   C        3     NaN  left_only

结果表明,在右侧数据集中只有 key 为 B 和 D 的行与左侧数据集中的行匹配,其余行均为左侧数据集独有。