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

Python遍历Pandas DataFrame列匹配值时仅重复返回首个索引如何解决

问题原因

  • 出错核心是Python内置列表的index()方法特性:该方法只会返回列表中第一个匹配目标值的元素下标,你每次匹配到值为1的元素时调用该方法,永远返回第一个1的下标0,最终才会输出[0,0,0]的错误结果。

解决方案

方案1:修正for循环写法

遍历列的时候同时获取索引和对应值,不需要再调用index()方法查询下标:

import pandas as pd
d = {'a': [0.1, 0.2,0.3,0.4,0.5,0.6], 'b': [0.6, 0.8,0.3,0.4,0.1,0.1],
     'c': [0.7, 0.3,0.9,0.4,1.0,0.2],'d': [1,0,0,1,0,1]}
df = pd.DataFrame(data=d)
klist=[]
for idx, val in enumerate(df.d):
    if  val == 1:
        klist.append(idx)
           
print(klist)

运行输出为[0, 3, 5],符合预期。

方案2:使用Pandas向量化操作(更推荐)

无需手动写循环,直接通过Pandas布尔索引筛选目标行后取索引,代码更简洁、大数据量下性能更高:

klist = df[df['d'] == 1].index.tolist()
print(klist)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:36:03