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

如何在Pandas中使用带条件的apply函数仅处理Area为NaN的DataFrame行

实现方案

首先修正原示例中sample_func的参数名笔误(函数内引用的变量v未在参数中定义,修改为参数v1):

import pandas as pd
from numpy import NaN

df = pd.DataFrame({'Area': [1, 9, NaN],
                   'Val': [1, 3, 5],
                   'Val2': [7, 9, 10]}) 

# 修正参数名错误
def sample_func(v1, token):
    sq = v1**2
    return int(sq)

方案1:预筛选目标行再执行apply(推荐,性能更优)

仅选中Area列为NaN的行执行函数,不需要遍历全量数据,适合数据量较大的场景:

df.loc[df['Area'].isna(), 'Area'] = df[df['Area'].isna()].apply(lambda x: sample_func(x['Val'], x['Val2']), axis=1)

方案2:在apply逻辑中嵌入条件判断

写法更简洁,适合小数据集使用:

df['Area'] = df.apply(lambda x: sample_func(x['Val'], x['Val2']) if pd.isna(x['Area']) else x['Area'], axis=1)

执行后最终输出的DataFrame结果如下:

AreaValVal2
117
939
25510

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:24:04