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

Python pandas按分组判断列是否含列表全部元素并新增yes/no列

需求说明

给定目标列表与原始DataFrame:

The_list=["A","B"]
Groups COL2
G1     A
G1     B
G1     C
G2     A
G2     D
G3     A
G3     B
G4     A
G5     B

需要新增COL3列,分组判断规则:

  • 按Groups字段拆分每组数据
  • 如果当前组的COL2列包含The_list中的所有元素,组内所有行COL3赋值为yes
  • 不满足条件的组,组内所有行COL3赋值为no

预期输出结果:

Groups COL2 COL3
G1     A    yes
G1     B    yes
G1     C    yes
G2     A    no
G2     D    no
G3     A    yes
G3     B    yes
G4     A    no
G5     B    no
实现代码

基于pandas实现,用groupby配合transform直接把分组判断结果映射到每一行,无需额外循环:

import pandas as pd

# 构造原始数据集
df = pd.DataFrame({
    'Groups': ['G1','G1','G1','G2','G2','G3','G3','G4','G5'],
    'COL2': ['A','B','C','A','D','A','B','A','B']
})
The_list = ["A","B"]

# 计算COL3列
df['COL3'] = df.groupby('Groups')['COL2'].transform(
    lambda col: 'yes' if set(The_list).issubset(set(col)) else 'no'
)

核心逻辑:将每个分组的COL2值转为集合,用issubset判断目标列表的所有元素是否都被包含,判断结果会自动填充到分组内的每一行。运行代码后得到的结果和预期完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 05:21:36