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

如何在RollNo非空时检查同行Name列是否为空并返回指定值?

解决方案

问题核心

仅需在RollNo列非空时,检查同行Name列是否为空,若为空则标记为"NO"。原代码存在空值判断错误与逻辑范围不符的问题。

错误原因分析

  1. 空值判断错误:原代码用astype(str).notnull()处理空值,会将Pandas的NaN转为字符串"nan",此时notnull()会返回True,无法正确识别Name列的空值。
  2. 逻辑范围偏差:!=的逻辑会同时选中两种反向情况(RollNo空但Name非空、RollNo非空但Name空),但你只需要后者。

正确实现代码

方法1:使用numpy.where生成结果列

import numpy as np
# 新增列存储结果:RollNo非空且Name为空时返回"NO",否则保留原Name值
u_op['Check_Result'] = np.where(
    u_op['RollNo'].notna() & u_op['Name'].isna(),
    'NO',
    u_op['Name']
)

方法2:使用loc直接定位赋值

# 初始化结果列为原Name值
u_op['Check_Result'] = u_op['Name']
# 定位目标行并赋值"NO"
u_op.loc[u_op['RollNo'].notna() & u_op['Name'].isna(), 'Check_Result'] = 'NO'

补充说明

若无需新增列,只想直接修改Name列符合条件的行:

u_op.loc[u_op['RollNo'].notna() & u_op['Name'].isna(), 'Name'] = 'NO'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 00:10:28