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

在Python Pandas中为列中每个缺失值填充唯一递增值

在Pandas DataFrame中为列内缺失值填充唯一递增值

问题描述

需要为DataFrame每列的缺失值(NA)填充唯一递增值(如na_1、na_2...),尝试用fillna传入列表实现但报错,因为该方法不支持直接传入列表批量填充缺失值。

原始DataFrame

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'A': [np.nan, 'a', 'b', np.nan],
    'B': [np.nan, 'R', 'T', np.nan],
    'C': [1, 2, np.nan, np.nan]
})

输出:

A    B    C
0  NaN  NaN  1.0
1    a    R  2.0
2    b    T  NaN
3  NaN  NaN  NaN

解决方案

自定义函数处理每列的缺失值,生成唯一标识后精准赋值:

def fill_unique_na(series):
    # 筛选当前列的缺失值位置
    na_positions = series.isna()
    # 根据缺失值数量生成唯一填充标签
    fill_labels = [f'na_{idx+1}' for idx in range(na_positions.sum())]
    # 将标签赋值到对应缺失位置
    series.loc[na_positions] = fill_labels
    return series

# 对所有列应用填充逻辑
df_processed = df.apply(fill_unique_na)

处理后结果

print(df_processed)

输出:

A      B      C
0  na_1  na_1      1
1     a      R      2
2     b      T  na_1
3  na_2  na_2  na_2

逻辑说明

  1. 按列单独处理,先定位所有缺失值的位置;
  2. 根据列内缺失值的数量,生成连续的唯一标识;
  3. 直接将标识赋值到缺失位置,绕过fillna的参数限制,实现精准填充。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 06:15:07