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

Pandas dataframe指定行不存在时赋值为0的KeyError问题求解

问题原因分析
  • 索引不存在时直接调用df.loc['b']会直接抛出KeyError,不会执行后续的isnull()判断,你修改的代码逻辑没有提前判断索引是否存在,所以还是会触发报错。
  • 代码中b == 0是相等判断语句,不是赋值语句,哪怕判断条件成立,也不会给变量b赋值为0,属于语法逻辑错误。
解决方案

方案1:提前判断索引存在性(直观易读)

适合仅少数索引可能缺失的场景:

def compute(tick):
    # 若csv第一列是行索引,建议加index_col=0参数避免索引识别错误
    df = pd.read_csv(f'{tick}.csv', index_col=0)
    a = df.loc['a'].sum()
    if 'b' in df.index:
        b = df.loc['b'].sum()
    else:
        b = 0
    c = df.loc['c'].sum()
    d = (a + b) / c
    return d

方案2:reindex统一处理缺失索引(简洁易扩展)

如果a、c也可能缺失,用该方法可以一次性处理所有需要用到的索引,不需要重复写判断逻辑:

def compute(tick):
    df = pd.read_csv(f'{tick}.csv', index_col=0)
    # 重索引,不存在的行自动填充0
    df = df.reindex(['a', 'b', 'c'], fill_value=0)
    a = df.loc['a'].sum()
    b = df.loc['b'].sum()
    c = df.loc['c'].sum()
    d = (a + b) / c
    return d

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:24:04