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

如何在Pandas DataFrame中实现向量化操作并获取满足条件的患者集合?

实现Pandas DataFrame按列提取满足条件的患者列表

原始代码与需求

原始数据代码

import pandas as pd

columns = ['S1', 'S2', 'S3', 'S4', 'S5']

df = pd.DataFrame({'Patient':['p1', 'p2', 'p3', 'p4', 'p5', 'p6', 'p7', 'p8', 'p8', 'p10'],
                   'S1':[0.7, 0.3, 0.5, 0.8, 0.9, 0.1, 0.9, 0.2, 0.6, 0.3],
                   'S2':[0.2, 0.3, 0.5, 0.4, 0.9, 0.1, 0.9, 0.7, 0.4, 0.3],
                   'S3':[0.6, 0.3, 0.5, 0.8, 0.9, 0.8, 0.9, 0.3, 0.6, 0.3],
                   'S4':[0.2, 0.3, 0.7, 0.8, 0.9, 0.1, 0.9, 0.7, 0.3, 0.3 ],
                   'S5':[0.9, 0.8, 0.5, 0.8, 0.9, 0.7, 0.2, 0.7, 0.6, 0.3 ]})

# 现有向量化操作示例
# 统计每一列中值≥0.5的单元格数量
arr1 = df[columns].ge(0.5).sum().to_numpy()

# 计算每一列中值≥0.5的单元格之和
arr2 = df[df[columns]>=0.5][columns].sum().to_numpy()

print(arr1)
print(arr2)

需求说明

为上述DataFrame中的S1至S5每一列,提取列值≥0.5对应的Patient列患者列表(或去重后的集合),输出格式参考如下:

[('p1', 'p3', 'p4', 'p5', 'p7', 'p8'), 
 ('p3', 'p5', 'p7', 'p8'), 
 ('p1', 'p3', 'p4', 'p5', 'p6', 'p7', 'p8'), 
 (...),
 (...)]

解决方案代码

import pandas as pd

columns = ['S1', 'S2', 'S3', 'S4', 'S5']

df = pd.DataFrame({'Patient':['p1', 'p2', 'p3', 'p4', 'p5', 'p6', 'p7', 'p8', 'p8', 'p10'],
                   'S1':[0.7, 0.3, 0.5, 0.8, 0.9, 0.1, 0.9, 0.2, 0.6, 0.3],
                   'S2':[0.2, 0.3, 0.5, 0.4, 0.9, 0.1, 0.9, 0.7, 0.4, 0.3],
                   'S3':[0.6, 0.3, 0.5, 0.8, 0.9, 0.8, 0.9, 0.3, 0.6, 0.3],
                   'S4':[0.2, 0.3, 0.7, 0.8, 0.9, 0.1, 0.9, 0.7, 0.3, 0.3 ],
                   'S5':[0.9, 0.8, 0.5, 0.8, 0.9, 0.7, 0.2, 0.7, 0.6, 0.3 ]})

# 按列提取满足条件的患者(去重后转元组)
patient_lists = [tuple(df.loc[df[col] >= 0.5, 'Patient'].unique()) for col in columns]

print(patient_lists)

输出结果

[('p1', 'p3', 'p4', 'p5', 'p7', 'p8'),
 ('p3', 'p5', 'p7', 'p8'),
 ('p1', 'p3', 'p4', 'p5', 'p6', 'p7', 'p8'),
 ('p3', 'p4', 'p5', 'p7', 'p8'),
 ('p1', 'p2', 'p3', 'p4', 'p5', 'p6', 'p8')]

代码说明

  • 用列表推导式遍历每一列,通过df.loc[df[col] >= 0.5, 'Patient']筛选出当前列值≥0.5的患者;
  • unique()用于去除重复患者(如原数据中p8出现两次);
  • 最后转为元组,与需求的输出格式一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 02:46:00