Pandas如何将布尔值为True的单元格替换为对应列名、False置空
实现方法
先给出可直接复现的完整代码:
import pandas as pd import numpy as np # 构造输入示例DataFrame,你可以替换成自己的数据读取逻辑 data = { "Acct Name": ["csld solutions", "bolo construct"], "product 1": [True, False], "Product 2": [False, True] } df = pd.DataFrame(data) # 筛选需要处理的产品列,此处排除不需要修改的客户名称列 product_cols = df.columns.drop("Acct Name") # 核心替换逻辑:True替换为对应列名,False替换为空值 df[product_cols] = np.where(df[product_cols], product_cols, "")
运行后得到的df和你给出的预期输出完全一致。
常见场景调整说明
- 如果有多个不需要处理的非产品列,修改筛选列的代码为:
product_cols = df.columns.drop(["列名1", "列名2"]),把所有不需要修改的列都加入列表即可 - 如果需要把False对应的位置替换为
NaN而非空字符串,把替换逻辑里的""改为np.nan即可 - 如果你的原始数据里布尔值是字符串格式的
"TRUE"/"FALSE",需要先转成布尔类型再执行替换:df[product_cols] = df[product_cols].replace({"TRUE": True, "FALSE": False}).astype(bool)
内容的提问来源于stack exchange,提问作者mtm1186
相关产品推荐
相关产品推荐

