在使用 Pandas 处理数据时,经常需要合并两个 DataFrame。merge 函数提供了强大的功能来完成这项任务。但是,有时我们需要查找两个 DataFrame 中不匹配的行。

通过将 merge 函数的 indicator 参数设置为 True,可以在合并后的 DataFrame 中新增一列 _merge,该列指示每行的合并结果:

  • both:两个 DataFrame 都包含该行数据。
  • left_only:只有左 DataFrame 包含该行数据。
  • right_only:只有右 DataFrame 包含该行数据。

以下是一个示例代码:

import pandas as pd

# 创建两个示例 DataFrame
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': ['a', 'b', 'c']})
df2 = pd.DataFrame({'A': [1, 4, 5], 'C': ['x', 'y', 'z']})

# 使用 merge 合并 DataFrame 并设置 indicator=True
merged = pd.merge(df1, df2, on='A', how='outer', indicator=True)

# 筛选不匹配的行
not_matched = merged[merged['_merge'] != 'both']

print(not_matched)

输出结果:

   A    B    C      _merge
1  2    b  NaN   left_only
2  3    c  NaN   left_only
3  4  NaN    y  right_only
4  5  NaN    z  right_only

通过筛选 _merge 列的值为 left_onlyright_only,可以轻松找到两个 DataFrame 中不匹配的行。

Pandas 合并 DataFrame:如何查找不匹配的行

原文地址: https://www.cveoy.top/t/topic/x 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录