Pandas中按其他列分组用Sales均值填充DataFrame列的方法
Pandas批量实现分类列分组均值填充方案
不需要额外安装第三方工具包,Pandas原生方法就可以直接实现全部分类列的批量分组均值填充,不需要逐列硬编码逻辑。
核心实现逻辑
针对City、Territory、Region、Area4个层级分类列,逐列按自身分组计算Sales字段的平均值,通过transform方法把组均值广播对齐到原表的每一行,直接替换对应分类列的位置即可,全程自动对齐索引,不会出现行错位问题。
可直接运行的代码
# 初始化结果表,保留原始数据不被修改 result_df = df.copy() # 指定所有需要处理的分类列 category_columns = ["City", "Territory", "Region", "Area"] for col in category_columns: # 按当前列分组计算Sales均值,自动对齐原表行位置赋值 result_df[col] = df.groupby(col)["Sales"].transform("mean")
注意事项
- 如果你不需要覆盖原分类列的文本值,想单独保留均值字段,把赋值语句改成
result_df[f"{col}_avg_sales"] = df.groupby(col)["Sales"].transform("mean")即可 - 该写法兼容26行的示例小数据和百万级以上的生产数据,运行效率远高于手动逐组匹配赋值的写法,计算结果可以通过
df.groupby(目标列)["Sales"].mean()的输出直接交叉核对。
内容的提问来源于stack exchange,提问作者Scope
相关产品推荐
相关产品推荐

