如何使用Pandas新增Drug_Name列并赋值为对应值为Y的列名
实现方法
首先你需要先整理出所有毒品类别对应的列名列表,替换下方代码中的示例列名即可。
单Y值场景(每行只有一个毒品列的值为Y)
这是效率最高的写法:
import pandas as pd # 1. 替换成你数据表中实际的所有毒品类别列名 drug_cols = ['Cocaine', 'Heroin', 'Marijuana', 'Methamphetamine'] # 2. 生成Drug_Name列 df['Drug_Name'] = df[drug_cols].eq('Y').idxmax(axis=1)
多Y值场景(一行可能有多个毒品列的值为Y)
如果存在一行多Y的情况,可以将所有符合条件的列名用分隔符拼接:
df['Drug_Name'] = df[drug_cols].eq('Y').apply( lambda row: ','.join(row[row].index), axis=1 )
补充说明
如果原毒品列名是小写格式(如cocaine),要输出首字母大写的格式,可以额外加一步格式处理:df['Drug_Name'] = df['Drug_Name'].str.capitalize()
内容的提问来源于stack exchange,提问作者Hima
相关产品推荐
相关产品推荐

