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

Pandas如何筛选两表GMC列匹配但Provider列不匹配的行

完整实现代码

import pandas as pd
import numpy as np

# 构造原始数据
data = {'GMC1':[1, 3, 5, 5, 8, 9, 8, 13],
        'Provider1':[101, 102, 103, 150, 160, 450, 567, 230]}
dataframe1 = pd.DataFrame(data)

data2 = {'GMC2':[1, 5, 7, 22, 11, 13, 9, 8],
         'Provider2':[101, 150, 150, 670, 567, 230, 340, np.nan]}
dataframe2 = pd.DataFrame(data2)

# 内连接两表
mergeDF = pd.merge(dataframe1, dataframe2, how = 'inner', left_on = 'GMC1', right_on = 'GMC2')
mergeDF = mergeDF[['GMC1', 'GMC2', 'Provider1', 'Provider2']]

# 计算每个GMC对应的有效Provider2集合(排除NaN)
gmc_provider2_map = mergeDF.dropna(subset=['Provider2']).groupby('GMC1')['Provider2'].agg(set).to_dict()

# 筛选符合条件的行:Provider1不在对应GMC的Provider2集合中
result = mergeDF[mergeDF.apply(lambda x: x['Provider1'] not in gmc_provider2_map.get(x['GMC1'], set()), axis=1)]

# 输出指定列
result = result[['GMC1', 'GMC2', 'Provider1']]
print(result)

实现逻辑说明

  • 先对合并后的表做分组统计,剔除Provider2为NaN的无效值后,将每个GMC对应的所有Provider2值存储为集合,便于后续快速判断归属关系
  • 逐行校验当前行的Provider1是否不在对应GMC的Provider2集合中,符合条件的行保留
  • 最终输出指定三列即可,运行结果和预期完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:54:00