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

遍历Pandas DataFrame遇KeyError,求筛选有效数据行的正确方法

问题解决:KeyError及有效数据行筛选方案

错误原因

你遇到的KeyError: 'live_updated'是因为列名引用错误:你的DataFramedf_live中不存在名为live_updated的列,实际对应的列名是live.updated(从你提供的DataFrame结构可确认)。另外,直接用!= "NaN"判断空值也是错误的——pandas中的NaN是特殊缺失值,不能和字符串"NaN"直接比较。

正确实现方案

方案1:高效向量化筛选(推荐)

利用pandas内置方法直接筛选有效行,避免低效的循环遍历:

import pandas as pd

# 筛选live.updated不为空的有效行(对应示例中的96、97行)
valid_live_rows = df_live[pd.notna(df_live["live.updated"])]

# 输出结果
print(valid_live_rows)

如果需要筛选所有live相关列都不为空的行,可使用dropna方法:

# 丢弃所有live列全为空的行
valid_live_rows = df_live.dropna(how="all")

方案2:修正循环遍历(仅作参考,不推荐)

如果一定要用循环遍历,需修正列名和空值判断逻辑:

for index, row in df_live.iterrows():
    # 用pd.notna判断当前行的live.updated是否非空
    if pd.notna(row["live.updated"]):
        print(row)
    else:
        print("Not live")

关键注意点

  • 列名必须严格匹配:DataFrame中的列名是live.updated,不是live_updated
  • 缺失值判断:必须用pd.notna()或pd.notnull(),不能直接和字符串"NaN"比较
  • 性能优先:pandas的向量化操作(如布尔索引、dropna)比iterrows循环效率高得多,处理大数据集时差距明显

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 12:25:30