Pandas 如何对DataFrame中多份同结构表的对应单元格求平均值
解决方法
步骤1:拆分原始DataFrame,提取所有独立子表
你读取到的大表中包含分隔用的全NaN行、重复的子表表头,首先先做数据清洗拆分:
import pandas as pd # 第一步:删除所有全为NaN的分隔行 df_clean = df.dropna(how='all').reset_index(drop=True) # 识别所有子表的表头行(特征是行值正好匹配[1,2,3,4]) header_indexes = df_clean[df_clean.eq([1,2,3,4]).all(axis=1)].index.tolist() # 补充末尾边界索引 header_indexes.append(len(df_clean)) # 提取所有子表存入列表 sub_tables = [] for idx in range(len(header_indexes)-1): # 取表头行之后到下一个表头行之前的内容作为子表 sub_df = df_clean.iloc[header_indexes[idx]+1 : header_indexes[idx+1]].reset_index(drop=True) # 统一子表列名 sub_df.columns = [1,2,3,4] sub_tables.append(sub_df)
步骤2:对应位置计算平均值
不需要手动遍历行列,直接拼接所有子表后按行索引分组求均值即可:
# 拼接所有子表,保留各自的原始行索引 all_data = pd.concat(sub_tables, keys=range(len(sub_tables))) # 按原始行索引(第二级索引)分组,对每列求均值 result = all_data.groupby(level=1).mean()
运行后输出的result就是你需要的汇总平均表,和你给出的期望输出完全匹配。
内容的提问来源于stack exchange,提问作者EA00
相关产品推荐
相关产品推荐

