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

如何基于Pandas按no字段统计两个DataFrame同名列的匹配度?

Pandas统计两个DataFrame同名列匹配情况的最优实现

问题背景

现有两个Pandas DataFrame,列名不完全重合,仅存在部分同名列,数据示例如下:

df1

no  datas1 datas2 datas3 datas4
 0      a    b      a      a
 1      b    c      b      b
 2      d    b      c      a

df2

no  datas1 datas2 datas3  data4  data5  data6
 0      c    a      a       a      a       b
 1      a    c      b       b      b       b
 2      a    b      c       b      c       c

需求:基于no字段对齐两行数据,统计每个同名列的匹配情况,支持输出匹配数量或匹配百分比,示例结果如下:

datas3 is 3 matched
datas4 is 2 matched

# 或百分比格式
datas3 is 100% match
datas4 is 67% match

最优实现方法

以下是高效且易维护的实现方案,利用Pandas的向量化操作和内置函数完成需求:

完整代码

import pandas as pd

# 构造示例数据(实际场景可替换为你的数据读取逻辑)
df1 = pd.DataFrame({
    'no': [0, 1, 2],
    'datas1': ['a', 'b', 'd'],
    'datas2': ['b', 'c', 'b'],
    'datas3': ['a', 'b', 'c'],
    'datas4': ['a', 'b', 'a']
})

df2 = pd.DataFrame({
    'no': [0, 1, 2],
    'datas1': ['c', 'a', 'a'],
    'datas2': ['a', 'c', 'b'],
    'datas3': ['a', 'b', 'c'],
    'data4': ['a', 'b', 'b'],
    'data5': ['a', 'b', 'c'],
    'data6': ['b', 'b', 'c']
})

# 1. 基于no字段合并两个DataFrame,用后缀区分来源
merged_df = pd.merge(df1, df2, on='no', suffixes=('_df1', '_df2'))

# 2. 筛选出除no外的同名列
common_columns = [col for col in df1.columns if col in df2.columns and col != 'no']

# 3. 遍历同名列,统计匹配情况
for col in common_columns:
    # 计算匹配数量
    match_num = (merged_df[f"{col}_df1"] == merged_df[f"{col}_df2"]).sum()
    # 计算匹配百分比(保留整数)
    match_percent = round((match_num / len(merged_df)) * 100)
    
    # 按需选择输出格式
    print(f"{col} is {match_num} matched")
    # print(f"{col} is {match_percent}% match")

代码说明

  1. 数据对齐:使用pd.merge基于no字段合并,确保两行数据严格按no对应,后缀_df1和_df2区分两个DataFrame的列,避免列名冲突。
  2. 筛选同名列:通过列表推导式快速找出两个DataFrame共有的列(排除作为关联键的no)。
  3. 匹配统计:利用Pandas的向量化布尔运算,直接比较对应列的每行数据,求和得到匹配数量;再通过简单计算得到匹配百分比。

方案优势

  • 高效性:向量化操作避免了逐行循环,处理大数据量时性能远高于手动遍历。
  • 准确性:内置合并函数确保数据对齐准确,不会出现行错位问题。
  • 灵活性:可轻松切换输出格式(数量/百分比),或扩展统计逻辑(如统计不匹配数量)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 20:25:31