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

如何在Pandas DataFrame中按指定列条件填充对应列缺失值?

解决Pandas按条件填充指定列缺失值的问题

问题分析

你之前的代码失效的核心原因:

  • 链式索引qc_data[qc_data['NEW_QC_TEST'] == "PH"]["VALUE"]会返回原DataFrame的视图或副本(Pandas无法明确判断),使用inplace=True时,修改的可能是副本而非原DataFrame,导致原数据无变化。
  • 第二种尝试的代码qc_data[qc_data['NEW_QC_TEST'] == "PH"].fillna(6.9, inplace=True)是对符合条件的行的所有列填充6.9,而非仅VALUE列,不符合需求。

正确实现方式

方法一:使用.loc精准定位(推荐)

通过.loc直接定位目标行和列,确保修改作用于原DataFrame:

# 定位NEW_QC_TEST为PH的行,对VALUE列的缺失值填充6.9
qc_data.loc[qc_data['NEW_QC_TEST'] == "PH", 'VALUE'] = qc_data.loc[qc_data['NEW_QC_TEST'] == "PH", 'VALUE'].fillna(6.9)

方法二:使用update方法

生成填充后的目标列数据,再同步到原DataFrame:

# 生成仅包含目标列填充后的数据,更新原DataFrame
fill_values = qc_data[qc_data['NEW_QC_TEST'] == "PH"]['VALUE'].fillna(6.9)
qc_data.update(fill_values)

方法三:结合np.where条件赋值

用条件判断直接为缺失值赋值:

import numpy as np

qc_data['VALUE'] = np.where(
    (qc_data['NEW_QC_TEST'] == "PH") & qc_data['VALUE'].isnull(),
    6.9,
    qc_data['VALUE']
)

内容的提问来源于stack exchange,提问作者Jose Sanchez Palacios

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 00:00:07