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

遍历DataFrame所有行生成新列时遭遇KeyError: 'value'的问题咨询

修复KeyError并优化你的DataFrame列生成逻辑

错误根源:apply的轴参数错误

你遇到的KeyError: 'value'是因为apply默认使用axis=0(对列进行逐列操作),这时候lambda里的x代表的是一整列数据,而不是单行数据,自然找不到'value'这个"键"(因为列的索引是行号,不是列名)。你需要的是对行进行操作,所以必须显式指定axis=1参数。

修复后的基础代码

先修正apply的用法,同时处理mean为空值的行:

# 对每行应用逻辑,指定axis=1
df['new_col'] = df.apply(
    lambda x: False if x['value'] > x['upper'] or x['value'] < x['lower'] else True,
    axis=1
)
# 将mean为空的行的new_col设为NaN(或你需要的其他默认值)
df.loc[df['mean'].isnull(), 'new_col'] = np.nan

更高效的矢量化优化方案

apply是逐行遍历,在数据量较大时效率很低。推荐使用矢量化操作来实现相同逻辑,速度会快很多:

import numpy as np

# 先构建核心条件:value在[lower, upper]区间内
in_range = (df['value'] >= df['lower']) & (df['value'] <= df['upper'])
# 结合mean不为空的条件,为空的行设为NaN
df['new_col'] = np.where(df['mean'].notnull(), in_range, np.nan)

额外说明

  • 你原代码里的&gt;和&lt;是HTML转义字符,在Python代码里直接用>和<即可。
  • 矢量化操作是Pandas的最佳实践,避免不必要的逐行遍历,尤其是处理大型数据集时优势明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 03:37:31