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

在Pandas中按姓名与地区分组,用mode填充缺失值

按姓名+地区分组,用众数填充缺失值

以下是使用Python Pandas实现需求的完整方案,重点处理Tom+UK组的缺失值填充:

原始数据集

NamelocationValue
TomUSA20
TomUKNaN
TomUSANaN
TomUK20
JackIndiaNaN
NihalAfrica30
TomUKNaN
TomUK20
TomUK30
TomUK20
TomUK30
SamUK30
SamUK30

实现步骤

1. 加载数据

首先将数据集转为Pandas DataFrame:

import pandas as pd
import numpy as np

data = {
    'Name': ['Tom', 'Tom', 'Tom', 'Tom', 'Jack', 'Nihal', 'Tom', 'Tom', 'Tom', 'Tom', 'Tom', 'Sam', 'Sam'],
    'location': ['USA', 'UK', 'USA', 'UK', 'India', 'Africa', 'UK', 'UK', 'UK', 'UK', 'UK', 'UK', 'UK'],
    'Value': [20, np.nan, np.nan, 20, np.nan, 30, np.nan, 20, 30, 20, 30, 30, 30]
}

df = pd.DataFrame(data)

2. 分组填充逻辑

定义函数按组计算众数并填充缺失值,处理多众数的情况(取第一个众数):

def fill_group_mode(group):
    # 获取组内Value的众数,若存在则取第一个,否则保留NaN
    mode = group['Value'].mode()
    fill_val = mode.iloc[0] if not mode.empty else np.nan
    group['Value'] = group['Value'].fillna(fill_val)
    return group

# 按Name和location分组后应用填充
df_filled = df.groupby(['Name', 'location'], group_keys=False).apply(fill_group_mode)

3. 验证Tom+UK组的填充结果

查看Tom+UK组的填充后数据:

print(df_filled[(df_filled['Name'] == 'Tom') & (df_filled['location'] == 'UK')])

输出:

Name location  Value
1   Tom       UK   20.0
3   Tom       UK   20.0
6   Tom       UK   20.0
7   Tom       UK   20.0
8   Tom       UK   30.0
9   Tom       UK   20.0
10  Tom       UK   30.0

Tom+UK组中20出现3次,是出现次数最多的值,所有NaN均被填充为20。

4. 完整填充结果

print(df_filled)

输出:

Name location  Value
0     Tom      USA   20.0
1     Tom       UK   20.0
2     Tom      USA   20.0
3     Tom       UK   20.0
4    Jack    India    NaN  # 该组无有效数据,无法计算众数
5   Nihal   Africa   30.0
6     Tom       UK   20.0
7     Tom       UK   20.0
8     Tom       UK   30.0
9     Tom       UK   20.0
10    Tom       UK   30.0
11    Sam       UK   30.0
12    Sam       UK   30.0

关键说明

  • 对于存在多个众数的组,代码默认取第一个众数进行填充;若需要自定义逻辑,可修改fill_group_mode函数。
  • 无有效非缺失值的组(如Jack+India),缺失值会保留NaN,因为无法计算众数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 12:45:35