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

如何为布尔值DataFrame添加每行首个True值的列索引新列?

获取布尔值DataFrame每行首个True的列索引

不用手动遍历行和列,用pandas内置方法就能高效解决,还能避免遍历容易出现的索引错误或边界问题:

import pandas as pd

# 假设你的布尔DataFrame名为df
# 1. 获取每行第一个True对应的列索引,全False的行暂取第一个列名
first_true_col = df.idxmax(axis=1)
# 2. 将全False的行替换为-1,新增为最后一列
df['first_true_index'] = first_true_col.where(df.any(axis=1), -1)

关键逻辑说明

  • idxmax(axis=1):沿行方向查找第一个True的列索引(布尔值中True等价于1,False等价于0,idxmax会返回第一个最大值的列标识)
  • df.any(axis=1):判断每行是否存在至少一个True,生成布尔Series
  • where():仅当行内存在True时保留idxmax的结果,否则替换为-1

这个方法完全贴合你的需求,示例中会得到[-1,-1,8,-1,-1]的新增列结果,且比遍历方法效率高得多,尤其适合大尺寸的DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 14:23:12