如何转置pandas DataFrame多列并生成d前缀的自定义格式列名
Pandas DataFrame 按列展开为单行自定义列名实现方法
核心实现代码
以下为完整可运行代码,你可以直接替换示例数据源为自己的实际数据:
import pandas as pd # 构造原始DataFrame,可替换为自己的数据源 df = pd.DataFrame({ 'AD': [169.88, 12.54, 321.38], 'AP': [0.00, 0.01, 0.00], 'AR': [50.50, 84.75, 65.08], 'MD': [814.0, 93.0, 986.0], 'MS': [57.3, 51.3, 56.7], 'iS': [32.3, 36.6, 28.9], 'AS': [43.230, 43.850, 42.070] }) # 转换逻辑 # 1. 为原始行生成d1/d2/d3格式的前缀标识,自动适配任意行数 df.index = [f'd{i+1}' for i in df.index] # 2. 堆叠数据后调整索引顺序,转置为单行结构 result = df.unstack().swaplevel().to_frame().T # 3. 合并多级索引为要求的列名格式 result.columns = [f'{prefix}_{col}' for prefix, col in result.columns] # 打印结果验证 print(result)
输出结果
运行后输出的result完全符合要求,所有原始列会自动完成展开:
d1_AD d2_AD d3_AD d1_AP d2_AP d3_AP d1_AR d2_AR d3_AR d1_MD d2_MD d3_MD d1_MS d2_MS d3_MS d1_iS d2_iS d3_iS d1_AS d2_AS d3_AS 0 169.88 12.54 321.38 0.0 0.01 0.0 50.5 84.75 65.08 814.0 93.0 986.0 57.3 51.3 56.7 32.3 36.6 28.9 43.23 43.85 42.07
补充说明
代码支持任意行数、任意列数的原始数据,不需要手动修改列名生成逻辑,新增原始列也会自动完成展开。
内容的提问来源于stack exchange,提问作者user308827
相关产品推荐
相关产品推荐

