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

如何使用Pandas提取Excel中含全量ID的Name-Subname组合数据

用Pandas提取满足ID全值条件的Name+Subname组合

嘿,这个需求我经常碰到,用Pandas处理起来很顺手,我给你一步步拆解怎么做:

需求回顾

我们有个包含Name、subname、ID三列的表格,要找出Name和subname的组合完全相同,并且该组合对应的ID必须同时包含1、2、3三个值的所有组合,最后只输出这些符合条件的Name和subname。

实现步骤&代码

首先先把示例数据构造出来(你可以直接替换成自己的Excel数据,用pd.read_excel()读取就行):

import pandas as pd

# 构造题目里的示例数据
data = {
    'Name': ['A', 'A', 'A', 'A', 'A', 'F', 'F', 'F'],
    'subname': ['B', 'B', 'B', 'C', 'C', 'C', 'C', 'C'],
    'ID': [1, 2, 3, 1, 2, 1, 2, 3]
}
df = pd.DataFrame(data)

接下来是核心处理逻辑:

  1. 按Name和subname分组,检查每个分组里的ID集合是否正好是{1,2,3}
  2. 筛选出符合条件的分组,最后去重得到唯一的组合
# 筛选出ID包含全部1、2、3的分组对应的行
filtered_df = df.groupby(['Name', 'subname']).filter(lambda x: set(x['ID']) == {1, 2, 3})

# 只保留Name和subname列,并且去重(因为每个组合会有3行数据)
result = filtered_df[['Name', 'subname']].drop_duplicates()

# 打印结果
print(result)

运行结果

执行后会输出你想要的结果:

Name subname
0    A       B
5    F       C

另一种简洁写法

如果你不想保留原行数据,只想直接拿到符合条件的组合,也可以用这种方式:

# 先判断每个分组是否符合条件,再筛选出符合条件的分组键
valid_combinations = df.groupby(['Name', 'subname']).apply(lambda x: set(x['ID']) == {1, 2, 3})
result = valid_combinations[valid_combinations].reset_index()[['Name', 'subname']]

print(result)

这个写法和上面的结果完全一致,看你个人习惯选哪种就行。


内容的提问来源于stack exchange,提问作者NAGA RAJ S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 12:42:31