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

如何在Pandas DataFrame每行匹配指定数字集并新增布尔列

Pandas实现行级集合包含判断并新增标记列

首先定义示例DataFrame:

import pandas as pd

df1 = pd.DataFrame({
    "T1": [1, 7, 1, 6],
    "T2": [7, 8, 9, 2],
    "T3": [8, 6, 6, 6],
    "T4": [3, 3, 3, 8],
    "T5": [9, 1, 2, 7]
})

print(df1)

输出结果:

T1  T2  T3  T4  T5
0   1   7   8   3   9
1   7   8   6   3   1
2   1   9   6   3   2
3   6   2   6   8   7

需求说明

需要新增Cond1和Cond2两列,标记规则如下:

  • Cond1:若该行包含集合{1,8,3}的所有元素,标记为'T',否则为'F'
  • Cond2:若该行包含集合{7,8,6}的所有元素,标记为'T',否则为'F'

最终目标输出:

T1  T2  T3  T4  T5 Cond1 Cond2
0   1   7   8   3   9     T     F
1   7   8   6   3   1     T     T
2   1   9   6   3   2     F     F
3   6   2   6   8   7     F     T

实现方法

代码实现

# 定义判断用的集合
cond1_set = {1, 8, 3}
cond2_set = {7, 8, 6}

# 新增Cond1列,按行判断集合包含关系
df1['Cond1'] = df1.apply(lambda row: 'T' if cond1_set.issubset(set(row)) else 'F', axis=1)
# 新增Cond2列,同理
df1['Cond2'] = df1.apply(lambda row: 'T' if cond2_set.issubset(set(row)) else 'F', axis=1)

# 打印结果
print(df1)

关键逻辑解释

  • axis=1指定按行遍历DataFrame
  • set(row)将当前行的所有元素转换为集合,利用集合的特性快速判断包含关系
  • issubset()方法用于验证目标集合是否完全被当前行的元素集合包含,即该行是否涵盖目标集合的所有元素
  • 通过三元表达式将布尔判断结果转为需求的'T'/'F'标记

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 21:05:24