如何用Python按位置计算多个Excel文件的逐行逐列均值
解决方案:批量计算多Excel文件的逐行逐列均值
核心思路
你需要的是不同文件中同一行号、同一列位置的数值均值,而非单个文件内的行/列均值或所有数据的整体均值。关键是先把所有Excel文件的数据按行索引、列名对齐,再对每个位置的数值计算跨文件的均值。
实现代码
import pandas as pd import os # 1. 设置文件夹路径(替换为你的文件夹路径) folder_path = "你的Excel文件所在文件夹路径" # 2. 获取文件夹中所有Excel文件的路径 excel_files = [f for f in os.listdir(folder_path) if f.endswith(('.xlsx', '.xls'))] # 3. 读取所有文件并存储为列表,保留原始行索引(确保行号对应) df_list = [] for file in excel_files: file_path = os.path.join(folder_path, file) # 读取时不设置表头,用默认列名(如0,1,...,99),保留原始行索引(0对应第1行,10对应第11行) df = pd.read_excel(file_path, header=None, index_col=None) df_list.append(df) # 4. 合并所有数据框,按行索引和列对齐,计算跨文件的均值 # concat会自动对齐行和列,缺失的行/列填充NaN,mean时忽略NaN mean_df = pd.concat(df_list).groupby(level=0).mean() # 5. 将结果保存为新Excel文件 mean_df.to_excel("逐行逐列均值结果.xlsx", header=None, index=False)
关键说明
read_excel用header=None是为了按列位置(A列对应0,B列对应1...)计算,避免不同文件表头不一致导致对齐错误;index_col=None保留原始行索引,确保第11行对应索引10(注意:pandas索引从0开始,所以A11对应索引10)。pd.concat(df_list)会把所有数据框堆叠,groupby(level=0)按行索引分组,mean()计算每组(即同一行号)各列的跨文件均值,自动忽略缺失行的NaN值。- 如果你的Excel文件有统一表头,可以去掉
header=None,改用index_col=None,这样会按列名对齐计算均值。
内容的提问来源于stack exchange,提问作者Harsh Singh
相关产品推荐
相关产品推荐

