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

如何在pandas DataFrame中查找包含特定值的列并返回每行对应列索引

解决方案

可以直接用pandas等值判断配合numpy的向量化操作实现,效率远高于逐行遍历:

  1. 首先构造测试DataFrame:
import pandas as pd
import numpy as np

test = pd.DataFrame({"id":[1,2,3,4],
                     "name_1":["peter","bobby","alex","chris"],
                     "name_1_flag":["real","fake","fake","real"],
                     "name_2":["hector","abi","henrik","miko"],
                     "name_2_flag":["fake","real","fake","fake"],
                     "name_3":["hans","khan","will","than"],
                     "name_3_flag":["fake","fake","real","fake"]})
  1. 生成要求的series结果:
# 生成1-based的列索引series
res = pd.Series(np.argmax(test.eq('real').to_numpy(), axis=1) + 1, name='col_index')

运行后res的输出和要求完全一致:

0    3
1    5
2    7
3    3
Name: col_index, dtype: int64

如果需要获取所有real值对应的行、列元组,可以用以下代码:

# 行列均为0-based的元组列表
row_col_tuples = list(zip(*np.where(test.eq('real'))))
# 输出:[(0, 2), (1, 4), (2, 6), (3, 2)]

# 列索引为1-based的元组列表
row_col_tuples_1based = [(r, c+1) for r,c in zip(*np.where(test.eq('real')))]
# 输出:[(0, 3), (1, 5), (2, 7), (3, 3)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:36:01