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

如何在数据集的numpy np.where条件中使用inplace=True参数

在np.where中正确处理fillna的inplace参数

你的代码存在核心问题:当fillna使用inplace=True时,这个方法会直接修改原DataFrame的列,并且返回None。把它放在np.where的第二个参数里,会导致符合Partner_working == "Yes"条件的行被赋值为None,完全达不到填充缺失值的目的。

正确用法分两种情况:

1. 推荐方式:不用inplace,直接用fillna的返回值

fillna默认(不带inplace=True)会返回填充后的新Series,刚好可以作为np.where的参数,逻辑清晰且不会意外修改原数据:

# 先计算中位数,避免重复计算提升效率
median_salary = df['Partner_salary'].median()
df['Partner_salary'] = np.where(
    df['Partner_working'] == "Yes",
    df['Partner_salary'].fillna(median_salary),  # 返回填充后的结果,作为赋值项
    0
)

2. 若坚持用inplace(不推荐)

需要拆分逻辑:先单独填充符合条件的行,再用np.where设置其他行为0。注意这里即使加inplace=True,也需要针对筛选后的行操作,否则会修改整个列的缺失值:

median_salary = df['Partner_salary'].median()
# 仅对符合条件的行填充缺失值,inplace修改原列
df.loc[df['Partner_working'] == "Yes", 'Partner_salary'].fillna(median_salary, inplace=True)
# 再将不符合条件的行设为0
df['Partner_salary'] = np.where(df['Partner_working'] == "Yes", df['Partner_salary'], 0)

注意

inplace=True的操作会直接修改原数据,不利于代码的可维护性和调试,除非明确需要,否则优先选择第一种方式。

内容的提问来源于stack exchange,提问作者yashashri jawadekar Harshe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 04:39:25