如何在Python Pandas DataFrame中对相邻n列求均值合并?
解决方案
直接利用pandas的groupby按列分组求均值即可实现,以下是具体步骤:
1. 核心思路
将原DataFrame的列按每4列一组划分,对每组内的列计算均值,生成新的列,最终得到500列的结果。
2. 代码实现
示例验证(模拟你的测试数据)
import pandas as pd import numpy as np # 模拟你给出的A-H列测试数据 df = pd.DataFrame( data=[[1,1,1,1,2,2,2,2]], columns=['A','B','C','D','E','F','G','H'] ) # 生成分组键:每4列对应同一个组编号 group_keys = [i // 4 for i in range(len(df.columns))] # 按列分组计算均值,并重命名新列 reduced_df = df.groupby(group_keys, axis=1).mean() # 用原每组的第一个列名作为新列名(也可自定义命名) reduced_df.columns = [df.columns[i*4] for i in range(len(reduced_df.columns))] print(reduced_df)
输出结果:
A B 0 1 2
适配2000列的场景
对于2000列的DataFrame,上述代码无需修改即可直接运行:
group_keys会自动生成500个组编号(0到499),每个编号对应4列groupby(axis=1)会按列分组,每组计算均值后生成500个新列
自定义新列名(可选)
如果不需要沿用原列名,可自定义新列名,比如按"合并组1"、"合并组2"命名:
reduced_df.columns = [f'合并组_{i+1}' for i in range(len(reduced_df.columns))]
内容的提问来源于stack exchange,提问作者Thoughtful_Jeffrie
相关产品推荐
相关产品推荐

