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

如何按条件修改DataFrame列:当proba列为NaN时将对应flag列设为0

实现方案

两种常用的稳定实现方式如下:

方法1:使用loc定位修改(推荐,性能最优,无副作用)

直接定位符合条件的行修改flag列值,会直接修改原DataFrame:

import pandas as pd

# 核心逻辑
df.loc[df['proba'].isna(), 'flag'] = 0

逻辑说明:df['proba'].isna()会返回布尔序列,匹配所有proba列为NaN的行,loc定位到这些行的flag列后直接赋值为0。

方法2:使用np.where生成新列

如果你不想修改原DataFrame,需要生成新的列/新表可以用这个方法:

import pandas as pd
import numpy as np

# 生成新的flag列,不修改原df
df['new_flag'] = np.where(df['proba'].isna(), 0, df['flag'])
# 如果要直接覆盖原flag列也可以写为 df['flag'] = np.where(df['proba'].isna(), 0, df['flag'])

注意事项

  • pandas 1.0以下的旧版本中,可以把isna()替换为isnull(),两者功能完全一致,isna()是后续版本新增的别名
  • 如果需要生成全新的DataFrame不改动原表,可提前对原表做拷贝:new_df = df.copy(),再对new_df做修改操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:36:03