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

如何让pandas DataFrame的apply仅对Col1为NaN/Null的行生效?

解决方案

方法1:直接修改lambda逻辑(仅改一行代码即可)

把原apply语句替换为如下内容即可:

df['new_col'] = df.apply(lambda x: sample_func(x['Col1'], x['Col2'], 'xxxxxx') if pd.isna(x['Col1']) else '', axis = 1)

逻辑说明:通过pd.isna()判断当前行Col1是否为空值(同时兼容识别NaN、Null两种空值格式),仅为空时执行自定义函数,否则返回空字符串,直接匹配需求效果。

方法2:仅筛选目标行执行(更推荐,性能更优)

因为你的自定义函数涉及API调用,全量行执行会浪费不必要的请求资源,更推荐只对需要处理的行执行逻辑:

# 先初始化新列为空
df['new_col'] = ''
# 仅筛选Col1为NaN的行执行函数赋值
mask = df['Col1'].isna()
df.loc[mask, 'new_col'] = df[mask].apply(lambda x: sample_func(x['Col1'], x['Col2'], 'xxxxxx'), axis=1)

该方案只会对符合条件的行发起API请求,数据量越大性能优势越明显。

两种方案运行后输出结果完全符合预期:

Col1  Col2          new_col
0   1.0     1                 
1   9.0     3                 
2   NaN     5  nan,-5-xxxxxx

内容的提问来源于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:39:00