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

使用Pandas iterrows遍历DataFrame筛选True行时遇类型错误的解决

问题解决:DataFrame逐行迭代筛选行时的TypeError

错误原因

df.iterrows()返回的是**(行索引, 行数据)**的元组,你直接用row['Ans']是在操作元组,自然会触发tuple indices must be integers or slices, not str的错误。

修正后的逐行迭代代码

把循环里的变量拆成索引和行数据两个部分,再判断行数据的Ans值:

import pandas as pd

df = pd.DataFrame({
   'Code': ['t1', 't2','t3'],
   'Ans': [True, False, True],
   'Val': [140, 145,140],
})

Trues = []

# 拆包索引和行数据
for idx, row in df.iterrows():
    if row['Ans'] == True:
        Trues.append(row)

print(Trues)

运行后会得到包含符合条件的Series对象的列表。

更高效的非迭代方法

如果不需要强制逐行迭代,pandas的布尔索引是更高效的方式,直接筛选出符合条件的行:

# 筛选出Ans为True的行,得到新的DataFrame
true_rows_df = df[df['Ans'] == True]

# 如果需要转成字典列表形式
true_rows_list = true_rows_df.to_dict('records')
# 或者转成无索引的元组列表
true_rows_list = list(true_rows_df.itertuples(index=False, name=None))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 03:12:32