You need to enable JavaScript to run this app. Python实现CSV数据集行列同名单元格归集及平均值计算
优惠活动
大模型
产品
解决方案
定价
更多

Python实现CSV数据集行列同名单元格归集及平均值计算

行列同名交叉单元格取值与平均值计算实现方案

实现目标:匹配CSV中行名称(行首列文本)与列名称(表头文本)完全一致的交叉单元格,归集符合条件的数值后计算算术平均值。

参考CSV样例结构:

典型带行索引的CSV结构示例(第一列为行名称,无专属列名,后续行为列对应数据):

,指标A,指标B,指标C
指标A,12,3,5
指标B,4,15,6
指标C,7,8,20

按照需求需提取的单元格为:(指标A行, 指标A列)的12、(指标B行, 指标B列)的15、(指标C行, 指标C列)的20,对应平均值为15.67。

基于Pandas的实现方案(适配中大型数据量,推荐使用)

实现逻辑:

  • 读取CSV时将行名称所在列设置为DataFrame索引,保留原始行列名称的映射关系
  • 计算行索引与列名的交集,得到所有满足名称完全匹配的标签集合
  • 逐标签提取对应交叉单元格的数值,避免嵌套循环的性能损耗
  • 处理无匹配项的边界场景,避免除零异常

对应可运行代码:

import pandas as pd

# 读取CSV,index_col=0表示将第一列设置为行名称索引
df = pd.read_csv("your_dataset.csv", index_col=0)

# 提取行名和列名的完全匹配集合
matched_labels = df.index.intersection(df.columns)

# 归集所有匹配位置的数值
matched_values = [df.loc[label, label] for label in matched_labels]

# 计算平均值,无匹配项时返回0避免报错
average = sum(matched_values) / len(matched_values) if matched_values else 0

使用注意:

  • 如果实际CSV中行名称不在第一列,只需要调整read_csv的index_col参数为行名所在的列序号即可
  • 该实现为严格字符串匹配,若需要忽略名称前后空格、大小写差异,可在读取后对索引和列名做统一预处理,比如df.index = df.index.str.strip()、df.columns = df.columns.str.strip().str.lower()

纯Python标准库实现方案(无第三方依赖,适合小数据量)

实现逻辑:

  • 读取CSV表头,构建列名到列索引的映射字典,提升查找效率
  • 逐行读取数据,将当前行的行名称与列名映射表做匹配,命中则提取对应位置的数值
  • 过滤无法转换为数值的无效单元格,避免计算报错

对应可运行代码:

import csv

matched_values = []

with open("your_dataset.csv", "r", encoding="utf-8") as f:
    csv_reader = csv.reader(f)
    # 读取第一行表头,即所有列名称
    column_headers = next(csv_reader)
    # 构建列名->列索引的映射,快速匹配
    col_index = {name.strip(): idx for idx, name in enumerate(column_headers)}

    for row in csv_reader:
        # 第一列为当前行的行名称
        row_label = row[0].strip()
        # 匹配行名与列名
        if row_label in col_index:
            target_idx = col_index[row_label]
            # 尝试将单元格值转为浮点数,无效值直接跳过
            try:
                cell_num = float(row[target_idx])
                matched_values.append(cell_num)
            except (ValueError, IndexError):
                continue

# 计算平均值
average = sum(matched_values) / len(matched_values) if matched_values else 0

内容的提问来源于stack exchange,提问作者so.n

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 04:27:04