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

Pandas DataFrame未知列名时合并二值列取行最大值方法

需求说明

需要实现通用的DataFrame二值列合并逻辑:

  • 对每组重复的二值列逐行取最大值,合并为单列
  • 不需要预先知晓待合并的列名,可直接嵌入通用循环批量处理多组重复列
现有上下文

相关变量与前置逻辑如下:

  • 重复问题映射字典duplicates_binary_questions = { "question" : [114, 155] }:键为合并后统一使用的列名/问题标识,值为该组下所有重复问题的ID列表
  • 全量数据存储在主DataFrame data中,问题列的命名规则为问题ID_业务后缀格式
  • 已实现列筛选逻辑:通过匹配列名中下划线前的ID前缀,筛出当前组所有重复列构成子数据集sub_data_binary,对应代码:
for key, value in duplicates_binary_questions.items():
    value = [str(x) for x in value]
    sub_data_binary = data[
        data.columns[np.isin([x[: x.find("_")] for x in data.columns], value)]
    ]
实现方案

直接调用pandas的行维度最大值计算方法即可完成逐行取最大值的逻辑,之前调用该方法报错的核心原因是:没有为生成的结果序列指定统一列名,导致无法顺利合并回主DataFrame。
完整可运行代码如下:

import numpy as np

duplicates_binary_questions = { "question" : [114, 155] }

for key, value in duplicates_binary_questions.items():
    value = [str(x) for x in value]
    # 筛选当前组所有二值列
    sub_data_binary = data[
        data.columns[np.isin([x[: x.find("_")] for x in data.columns], value)]
    ]
    # 逐行取最大值,结果直接以字典键作为列名写入主DataFrame
    data[key] = sub_data_binary.max(axis=1)

注意:如果待合并的二值列存在空值,可先调用sub_data_binary.fillna(0).max(axis=1)做填充处理,避免空值导致结果异常。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 12:01:12