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

如何基于多列抗生素组合条件填充DataFrame的TREATED列

问题:填充DataFrame的TREATED列

我有一个包含6列抗生素使用情况的DataFrame,每列用'Yes'或'No'表示是否使用对应抗生素,原始数据如下:

AZITHCLINCFTXMETROCFTNDOXYTREATED
YesYesNoNoNoNo
NoYesNoYesNoNo
YesYesNoNoNoNo
NoNoNoNoNoNo
YesYesYesYesYesYes
NoYesYesYesNoYes
NoNoNoNoNoYes
NoNoNoNoNoNo
YesYesYesNoNoNo
YesNoYesYesNoNo
YesNoNoNoYesNo
NoNoYesYesNoYes
NoNoNoNoYesYes
NoNoNoYesNoYes

需要填充TREATED列,规则如下:

只要满足以下任意一种抗生素组合(对应列值为'Yes'),则填入'Yes',否则填入'No':

  • AZITH 和 CLIN 均为'Yes'
  • AZITH、CFTX 和 CLIN 均为'Yes'
  • AZITH、CFTX 和 METRO 均为'Yes'
  • AZITH 和 CFTN 均为'Yes'
  • CFTX、DOXY 和 METRO 均为'Yes'
  • CFTN 和 DOXY 均为'Yes'
  • DOXY 和 METRO 均为'Yes'

注意:即使同时满足多个组合,也只需返回'Yes'。

解决方案

使用Pandas通过布尔值转换和条件判断实现,代码如下:

import pandas as pd

# 假设原始数据已加载到DataFrame df中
# 将Yes/No转换为布尔值,简化逻辑运算
bool_df = df.replace({'Yes': True, 'No': False})

# 定义各个判断条件
cond1 = bool_df['AZITH'] & bool_df['CLIN']
cond2 = bool_df['AZITH'] & bool_df['CFTX'] & bool_df['CLIN']
cond3 = bool_df['AZITH'] & bool_df['CFTX'] & bool_df['METRO']
cond4 = bool_df['AZITH'] & bool_df['CFTN']
cond5 = bool_df['CFTX'] & bool_df['DOXY'] & bool_df['METRO']
cond6 = bool_df['CFTN'] & bool_df['DOXY']
cond7 = bool_df['DOXY'] & bool_df['METRO']

# 合并所有条件,满足任意一个则标记为Yes
df['TREATED'] = (cond1 | cond2 | cond3 | cond4 | cond5 | cond6 | cond7).replace({True: 'Yes', False: 'No'})

最终输出结果

运行代码后得到的DataFrame如下:

AZITHCLINCFTXMETROCFTNDOXYTREATED
YesYesNoNoNoNoYes
NoYesNoYesNoNoNo
YesYesNoNoNoNoYes
NoNoNoNoNoNoNo
YesYesYesYesYesYesYes
NoYesYesYesNoYesYes
NoNoNoNoNoYesNo
NoNoNoNoNoNoNo
YesYesYesNoNoNoYes
YesNoYesYesNoNoYes
YesNoNoNoYesNoYes
NoNoYesYesNoYesYes
NoNoNoNoYesYesYes
NoNoNoYesNoYesYes

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 08:56:08