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

如何基于一个DataFrame对另一个DataFrame进行数据校验

实现方案

我们可以通过Pandas的集合运算快速实现这两个需求,前提是两个DataFrame均包含Country、City、Initiatives三列。

步骤1:导入依赖并构造测试数据

如果已有真实数据可跳过构造测试数据的部分

import pandas as pd

# 表1示例数据
df1 = pd.DataFrame({
    'Country': ['India', 'India', 'USA', 'USA'],
    'City': ['Bangalore', 'Bangalore', 'Texas', 'Texas'],
    'Initiatives': ['Education', 'Healthcare', 'Education', 'Healthcare']
})

# 表2示例数据
df2 = pd.DataFrame({
    'Country': ['India', 'India', 'India', 'India', 'USA', 'USA', 'USA'],
    'City': ['Bangalore', 'Bangalore', 'Bangalore', 'Mumbai', 'Texas', 'Texas', 'Texas'],
    'Initiatives': ['Education', 'Textile', 'Irrigation', 'Healthcare', 'Education', 'Healthcare', 'Irrigation']
})

# 生成国家-城市组合标识列
df1['country_city'] = df1['Country'] + '-' + df1['City']
df2['country_city'] = df2['Country'] + '-' + df2['City']

步骤2:实现需求1:查找仅在表2存在的国家-城市组合

# 取两个表的国家-城市组合去重后求差集
df1_pairs = set(df1['country_city'].unique())
df2_pairs = set(df2['country_city'].unique())
only_df2_pairs = list(df2_pairs - df1_pairs)

print(only_df2_pairs)
# 输出结果:['India-Mumbai']

步骤3:实现需求2:查找共同组合下仅表2存在的举措

common_pairs = df1_pairs & df2_pairs
res = {}

for pair in common_pairs:
    df1_init_set = set(df1[df1['country_city'] == pair]['Initiatives'].unique())
    df2_init_set = set(df2[df2['country_city'] == pair]['Initiatives'].unique())
    diff_init = list(df2_init_set - df1_init_set)
    if diff_init:
        res[pair] = diff_init

print(res)
# 输出结果:{'India-Bangalore': ['Textile', 'Irrigation'], 'USA-Texas': ['Irrigation']}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:24:02