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

基于Pandas按水果类别替换radius列0值为对应类别均值

解决方案

步骤说明

  1. 构造包含radius和fruit列的DataFrame
  2. 按fruit分组,计算每组排除0值后的radius均值
  3. 将radius列中的0值替换为对应水果类别的均值

完整代码

import pandas as pd

# 原始数据
radius = [10,2,3,0,10,2,0,12,6,10]
fruits = ["apple","apple","mango","watermelon","watermelon","apple","mango","watermelon","mango","apple"]

# 1. 创建DataFrame
df = pd.DataFrame({'radius': radius, 'fruit': fruits})

# 2. 计算每个水果类别非0半径的均值
# 先过滤掉radius为0的行,再分组求均值
fruit_radius_mean = df[df['radius'] != 0].groupby('fruit')['radius'].mean()

# 3. 替换0值为对应类别的均值
# 找到radius为0的行,用fruit匹配对应的均值
mask = df['radius'] == 0
df.loc[mask, 'radius'] = df.loc[mask, 'fruit'].map(fruit_radius_mean)

# 查看处理后的结果
print(df)

输出结果

radius       fruit
0    10.0        apple
1     2.0        apple
2     3.0        mango
3    11.0  watermelon
4    10.0  watermelon
5     2.0        apple
6     4.5        mango
7    12.0  watermelon
8     6.0        mango
9    10.0        apple

关键细节

  • 计算均值时必须先过滤0值,避免拉低类别均值
  • 使用loc+mask的方式替换值,比逐行apply更高效,适合大数据集
  • fruit_radius_mean是索引为水果类别的Series,通过map可快速完成类别与均值的匹配替换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:10:27