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

如何基于分类列筛选后填充指定类别行的数值列NA值且不改变原DataFrame形状

pandas 按分类填充指定列缺失值

示例数据集构造

先构造题目中的示例DataFrame:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'Cat_col': ['SS', 'PP', 'CC', 'XX', 'SS', 'XX', 'CC', 'BB'],
    'num_col1': [22, np.nan, 128, np.nan, 67, np.nan, 47, np.nan],
    'num_col2': [54, 89, 34, 56, 56, 90, 10, 29]
})

处理逻辑与代码

要实现仅对Cat_col为PP和XX的行,用num_col2填充num_col1的缺失值,且不修改原DataFrame,可按以下步骤操作:

  1. 复制原DataFrame,避免修改原始数据
  2. 通过条件筛选定位目标行,完成填充

代码如下:

# 复制原DataFrame
df_filled = df.copy()

# 定位符合条件的行并填充
df_filled.loc[
    (df_filled['Cat_col'].isin(['PP', 'XX'])) & (df_filled['num_col1'].isna()),
    'num_col1'
] = df_filled['num_col2']

处理后结果

执行上述代码后,df_filled的内容为:

Cat_colnum_col1num_col2
SS2254
PP8989
CC12834
XX5656
SS6756
XX9090
CC4710
BBNaN29

可以看到:

  • 仅PP和XX类别的num_col1缺失值被填充,其他类别(如BB)的缺失值保持不变
  • 原DataFramedf的结构和数据完全未受影响

内容的提问来源于stack exchange,提问作者mr17.5stuntman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 13:05:35