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

如何用对应Item众数及其他列众数填充DataFrame缺失值?

解决分类缺失值填充问题

实现思路

先按Item分组计算每个组内City的众数,用该众数填充对应组内的缺失值;对于像Item=F这类组内无有效值的情况,再用整个City列的全局众数填充剩余缺失值。

具体代码实现

首先构造示例DataFrame:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'Item': ['A', 'B', 'C', 'D', 'A', 'B', 'C', 'D', 'C', 'C', 'E', 'E', 'E', 'F', 'F'],
    'City': ['Paris', np.nan, 'Rome', 'London', 'Paris', 'Berlin', np.nan, 'London', 'Rome', 'London', np.nan, 'London', 'Paris', np.nan, np.nan]
})

然后执行填充操作:

  1. 计算每个Item分组的City众数,处理可能的多众数情况(取第一个):
item_mode = df.groupby('Item')['City'].agg(lambda x: x.mode().iloc[0] if not x.mode().empty else np.nan)
  1. 计算整个City列的全局众数:
global_mode = df['City'].mode().iloc[0]
  1. 先按分组众数填充缺失值,再用全局众数填充剩余缺失值:
# 第一步:用分组众数填充对应组的缺失值
df['City'] = df.apply(lambda row: item_mode[row['Item']] if pd.isna(row['City']) else row['City'], axis=1)
# 第二步:用全局众数填充分组无有效值的剩余缺失值
df['City'] = df['City'].fillna(global_mode)

结果验证

处理后的DataFrame如下:

ItemCity
0AParis
1BBerlin
2CRome
3DLondon
4AParis
5BBerlin
6CRome
7DLondon
8CRome
9CLondon
10ELondon
11ELondon
12EParis
13FLondon
14FLondon

其中Item=F的缺失值被全局众数London填充,其他组的缺失值也按对应组的众数完成了填充。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 08:11:41