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

用对应年龄/年龄段均值填充Dataframe中Cholesterol列的NaN值

用年龄段均值填充Pandas DataFrame中缺失的胆固醇值

步骤说明及代码实现

  1. 划分年龄段区间
    根据数据分布自定义年龄区间,比如按10岁为间隔划分。用pd.cut()给每条数据打上对应的年龄段标签:
import pandas as pd

# 自定义年龄区间和标签
bins = [0, 30, 40, 50, 60, 70, 100]
age_labels = ['<30', '30-40', '40-50', '50-60', '60-70', '70+']

# 为DataFrame添加年龄段列
df['Age_Group'] = pd.cut(df['Age'], bins=bins, labels=age_labels, right=False)

right=False表示区间左闭右开,比如30-40包含30岁但不包含40岁,你可以根据需求调整这个参数。

  1. 计算各年龄段的胆固醇均值
    用groupby()结合transform()计算每个年龄段的胆固醇均值,transform()会自动把均值匹配到对应行,方便后续填充:
# 计算每个年龄段的胆固醇均值(自动跳过NaN)
group_means = df.groupby('Age_Group')['Cholesterol'].transform('mean')
  1. 填充缺失值
    用fillna()把Cholesterol列的NaN值替换为对应年龄段的均值:
# 填充缺失值
df['Cholesterol'] = df['Cholesterol'].fillna(group_means)

额外优化

如果某个年龄段的所有胆固醇值都是NaN,上面的方法会导致该组的缺失值仍然是NaN。这种情况下可以用整体胆固醇均值兜底填充:

# 先按年龄段填充,再用整体均值补漏
df['Cholesterol'] = df['Cholesterol'].fillna(group_means).fillna(df['Cholesterol'].mean())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:47:10