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

使用按peak_id分组的中位数替换Pandas DataFrame中highpoint_metres缺失值

pandas 缺失值填充实现方案

完整可运行代码(基于你已编写的逻辑扩展)

import pandas as pd
members = pd.read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2020/2020-09-22/members.csv")

# 你已实现的按peak_id分组计算中位数逻辑
mediane_peak_id = members[["peak_id","highpoint_metres"]].groupby("peak_id",as_index=False).median()

# ------------- 新增代码开始 -------------
# 需求1:合并中位数到原表,新增列存储对应peak_id的中位数
members = members.merge(mediane_peak_id, on="peak_id", suffixes=("", "_median"))

# 需求2:空值替换,原highpoint_metres为空时用对应中位数填充
members["highpoint_metres"] = members["highpoint_metres"].fillna(members["highpoint_metres_median"])

# 可选:校验填充结果,输出填充后剩余的空值数量
print("填充后highpoint_metres列剩余空值数:", members["highpoint_metres"].isna().sum())

更简便的简化写法(无需单独生成分组中位数表)

可以直接用groupby+transform一步生成中位数列,代码更简洁:

import pandas as pd
members = pd.read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2020/2020-09-22/members.csv")

# 一步生成对应peak_id的中位数列
members["highpoint_metres_median"] = members.groupby("peak_id")["highpoint_metres"].transform("median")
# 空值填充
members["highpoint_metres"] = members["highpoint_metres"].fillna(members["highpoint_metres_median"])

逻辑说明

  • 合并/生成的highpoint_metres_median列即为你需要的每行对应peak_id的highpoint_metres中位数值
  • fillna()方法会自动识别highpoint_metres的空值,用同索引位置的中位数值替换,非空值不受影响
  • 若输出的剩余空值数不为0,是因为对应peak_id的所有highpoint_metres原本都为空,无有效值计算中位数,这类空值需要额外处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:45:09