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

如何用Python计算同前缀相邻行的数值平均值?

用Python实现同前缀相邻行的平均值计算

核心思路是遍历文件行,将相邻的同前缀行归为一组,计算每组的数值平均值后输出,具体实现步骤与代码如下:

实现步骤

  1. 读取文件并解析每行数据,提取出前缀(下划线_分隔第一列的前半部分)和对应的数值列表
  2. 将连续相邻的同前缀行自动分组
  3. 对每组数据计算各列数值的平均值,最后输出结果

完整代码实现

from itertools import groupby

def extract_prefix(s):
    # 从第一列字符串中提取下划线前的前缀
    return s.split('_')[0]

# 读取目标文件(假设文件名为data.txt)
with open('data.txt', 'r') as file:
    # 过滤空行并处理每行内容
    processed_lines = [line.strip() for line in file if line.strip()]

# 解析每行数据,格式为(前缀, 整数数值列表)
parsed_data = []
for line in processed_lines:
    segments = line.split()
    prefix = extract_prefix(segments[0])
    num_list = list(map(int, segments[1:]))
    parsed_data.append((prefix, num_list))

# 计算每组相邻同前缀行的平均值
output_lines = []
for prefix, group in groupby(parsed_data, key=lambda x: x[0]):
    group_items = list(group)
    row_count = len(group_items)
    # 按列聚合数值并求和
    column_sums = [sum(col) for col in zip(*[nums for _, nums in group_items])]
    # 计算整数平均值(与示例输出的取整逻辑一致)
    avg_values = [total // row_count for total in column_sums]
    output_lines.append(f"{prefix} {' '.join(map(str, avg_values))}")

# 打印最终结果
for line in output_lines:
    print(line)

代码说明

  • extract_prefix函数:专门处理第一列字符串,拆分并返回前缀部分
  • itertools.groupby:自动将连续相同前缀的行归为一组,精准匹配“相邻同前缀”的需求
  • 数值计算:通过zip(*...)将每组的数值按列聚合,求和后除以行数得到平均值,这里用整数除法//保证输出结果和示例一致

运行代码后,输出结果与需求示例完全一致:

apple 2 3 4
book 1 4 5
cook 3 5 6
book 2 3 4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 16:12:08