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

Python分组列均值计算问题:按radii分组求dens列均值输出不符预期

解决方案:按指定列分组计算目标列均值并保留分组列

问题分析

你的代码当前存在两个核心问题:

  1. groupby(['radii']).mean()会计算所有数值列的平均值,而非仅目标列dens
  2. 使用result.values输出时丢失了分组列radii(它默认成为了DataFrame的索引)

修改后的代码(两种可选实现)

方法一:保留分组列为索引,组合后输出

import numpy as np
import pandas as pd

# 读取数据,自动处理多空格分隔的情况
df = pd.read_table("test.txt", delim_whitespace=True)
# 仅对dens列按radii分组求均值,保留radii为索引
result = df.groupby('radii')['dens'].mean()
# 将索引(radii)和均值组合成二维数组
output_data = np.column_stack((result.index, result.values))
# 保存结果,匹配预期的格式精度
np.savetxt('result.txt', output_data, fmt='%f %f')

方法二:将分组列转为普通列后输出

import numpy as np
import pandas as pd

df = pd.read_table("test.txt", delim_whitespace=True)
# as_index=False让radii作为普通列,仅计算dens的均值
result = df.groupby('radii', as_index=False)['dens'].mean()
# 直接输出结果的数值部分
np.savetxt('result.txt', result.values, fmt='%f %f')

关键改动说明

  • 替换delimiter=" "为delim_whitespace=True:自动适配数据中多个空格的分隔场景,避免读取错误
  • 分组时指定['dens']:仅计算目标列的平均值,排除其他无关列
  • 保留分组列信息:要么通过索引组合输出,要么用as_index=False将其转为普通列,确保结果包含radii值
  • 调整fmt参数:保证输出的小数精度与预期一致

输出结果验证

运行修改后的代码,输出文件result.txt将与你的预期完全匹配:

0.024614 0.697947
0.073841 0.872433
0.123068 0.523459

(注:小数末尾的四舍五入属于正常精度处理,与预期值一致)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 13:18:12