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

如何为DataFrame添加Test列标记指定列的True值情况

Pandas 生成Test列实现方案

需求说明

现有一个Pandas DataFrame,指定列列表col_list内的列值均为布尔类型(True/False)。需要新增一列Test,规则如下:

  • 若col_list中所有列值全为False,Test列写入No Errors
  • 若至少有一列值为True,将所有值为True的列名(首字母大写)以下划线拼接后写入Test列

实现方法

方法一:逐行处理(易理解)

适合小数据集,代码逻辑直观:

import pandas as pd

# 示例DataFrame
df = pd.DataFrame({
    'col1': [True, False, False],
    'col2': [False, True, False],
    'col3': [True, False, False],
    'extra_col': ['x', 'y', 'z']
})
col_list = ['col1', 'col2', 'col3']

def generate_test_entry(row):
    # 筛选当前行值为True的列名,首字母大写
    active_cols = [col.capitalize() for col in col_list if row[col]]
    return "_".join(active_cols) if active_cols else "No Errors"

# 新增Test列
df['Test'] = df.apply(generate_test_entry, axis=1)

方法二:矢量化操作(高效)

针对大数据量优化,避免逐行循环,性能更优:

import pandas as pd

# 示例DataFrame
df = pd.DataFrame({
    'col1': [True, False, False],
    'col2': [False, True, False],
    'col3': [True, False, False],
    'extra_col': ['x', 'y', 'z']
})
col_list = ['col1', 'col2', 'col3']

# 生成拼接后的列名字符串,去掉末尾多余下划线
true_col_str = df[col_list].dot(df[col_list].columns.str.capitalize() + '_').str.rstrip('_')
# 替换空字符串为"No Errors"
df['Test'] = true_col_str.where(true_col_str != '', 'No Errors')

输出示例

执行上述代码后,DataFrame结果如下:

col1col2col3extra_colTest
TrueFalseTruexCol1_Col3
FalseTrueFalseyCol2
FalseFalseFalsezNo Errors

内容的提问来源于stack exchange,提问作者Θοδωρής Πάλλης

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 23:05:25