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

基于Country列分组填充DataFrame中的缺失值

看起来你找的方向完全没错!按Country分组计算特征均值来填充缺失值,就是处理这类问题的最优解,大概率是在实现细节上卡壳了对吧?我给你手把手捋一遍具体怎么做:

按国家分组填充缺失值的实操步骤

1. 先算每个国家的特征均值

首先用groupby按国家分组,计算你需要填充的两列的均值:

# 计算每个国家对应特征的均值
country_feature_means = data.groupby('Country')[['Advanced skiers, freeriders', 'Snow parks']].mean()

这一步会得到一个以国家名为索引的小DataFrame,每一行就是对应国家两个特征的平均值。

2. 用分组均值填充对应国家的NaN

这里的关键是用transform方法——它能把分组计算出的均值,自动匹配回原DataFrame对应的行,不用你手动去对齐索引:

# 针对需要填充的列,用分组均值替换NaN
fill_cols = ['Advanced skiers, freeriders', 'Snow parks']
data[fill_cols] = data.groupby('Country')[fill_cols].transform(lambda x: x.fillna(x.mean()))

举个例子,你的样本里Norway有一行是NaN/NaN,就会被替换成Norway这两个特征的均值(也就是3.0和4.0)。

3. 可选:给全NaN的国家做兜底填充

如果有些国家的某个特征全是NaN(比如样本里的Greece,两个特征都没有有效值),上面的方法处理后还是NaN。如果需要用整个特征的全局均值来兜底,可以再加这一步:

# 用全局均值填充剩余的NaN
data[fill_cols] = data[fill_cols].fillna(data[fill_cols].mean())

验证填充效果

处理完后可以用下面的代码检查缺失值是否清理干净:

# 查看各列剩余的缺失值数量
print(data.isna().sum())
# 或者直接看样本数据
print(data.head())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:04:23