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

如何解决Pandas中使用apply函数时出现的KeyError: 'Value'问题

解决KeyError及逻辑问题的方案

错误原因

你遇到的KeyError: 'Value',核心是df.apply(adjust_rank)默认按列处理数据(axis=0),此时函数里的s是单列的Series,自然找不到'Value'这个索引。另外你的代码还有两个隐性问题:

  • 用了位运算符&代替逻辑运算符and,会导致优先级错误的逻辑判断
  • 函数没有返回值,最终df['Rank']会全是NaN

修正后的逐行处理代码

def adjust_rank(s):
    # 用and做逻辑判断,也可以用括号包裹条件后用&(注意运算符优先级)
    if s['Value'] == 0 and s['Measure'] == "Count":
        if s["Gender"] == "boy":
            return 5000  # 男生最低排名
        elif s["Gender"] == "girl":
            return 3459  # 女生最低排名
        else:
            return s['Value']
    else:
        # 其余情况保留原Value作为Rank
        return s['Value']

# 指定axis=1,按行处理每一条记录
df['Rank'] = df.apply(adjust_rank, axis=1)

更高效的Pandas向量化写法(推荐)

用向量化操作替代apply,速度更快,适合大数据量场景:

import numpy as np

# 先设置默认Rank为原Value
df['Rank'] = df['Value']

# 筛选符合条件的记录并替换Rank值
mask = (df['Value'] == 0) & (df['Measure'] == "Count")
df.loc[mask & (df['Gender'] == 'boy'), 'Rank'] = 5000
df.loc[mask & (df['Gender'] == 'girl'), 'Rank'] = 3459

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 18:13:14