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

如何在pandas DataFrame中根据Beat列条件填充Disease列的值

你提供的示例DataFrame如下:
示例DataFrame

原有写法的问题

  • 判断NaN不能使用== 'NaN'或者普通值匹配逻辑,NaN是特殊缺失值标记,和任何值(包括自身)相等判断结果都为False,pandas中需使用isna()/isnull()方法检测缺失值。
  • 普通if-else是对整个Series做整体判断,无法逐行匹配每行Beat列的取值,pandas需使用向量化操作实现逐行逻辑。
  • fillna()仅会填充列中的空值,不会修改非空位置的取值,若你需要按Beat列规则重写整个Disease列,直接赋值即可。

正确实现方式

方法1:使用np.where(可读性最高)

import numpy as np
# 逐行匹配:Beat列为空则Disease取0,否则取1
a['Disease'] = np.where(a['Beat'].isna(), 0, 1)

方法2:布尔值转整型(写法更简洁)

布尔值转整型时True对应1、False对应0,对Beat.isna()的结果取反后转整型即可直接得到目标值:

a['Disease'] = (~a['Beat'].isna()).astype(int)

如果你的Disease列仅需要填充原有的空值,不需要覆盖已有数值,可以调整写法为:

a.loc[a['Disease'].isna(), 'Disease'] = np.where(a.loc[a['Disease'].isna(), 'Beat'].isna(), 0, 1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:09:03