You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas如何按指定规则将DataFrame转换为单行结构

Pandas实现多行列DataFrame按原列名追加数字后缀后横向拼接为单行结构

问题描述

现有如下结构的DataFrame(第一列为默认索引列,不需要参与处理):

A       B       C
0       1       4       7   
1       2       5       8   
2       3       6       9   

需要转换为如下目标格式:

A    A-1    A-2    B    B-1    B-2    C    C-1    C-2
1    2      3      4    5      6      7    8      9

已知DataFrame.T转置是实现该需求的可行第一步,需要通过代码自动修改列名,将多行数据横向拼接为上述单行结构。

实现代码

import pandas as pd

# 构造示例源数据
df = pd.DataFrame({'A': [1,2,3], 'B': [4,5,6], 'C': [7,8,9]})

# 核心处理流程
# 1. 转置后将所有值展平为一维序列
flat_data = df.T.to_numpy().flatten()
# 2. 按规则批量生成新列名
new_cols = []
for col_name in df.columns:
    new_cols.append(col_name)
    for row_idx in range(1, df.shape[0]):
        new_cols.append(f"{col_name}-{row_idx}")
# 3. 生成目标单行DataFrame
result = pd.DataFrame([flat_data], columns=new_cols)

执行后输出的result完全匹配目标结构:

A  A-1  A-2  B  B-1  B-2  C  C-1  C-2
0  1    2    3  4    5    6  7    8    9

逻辑说明

  • 转置操作后,原每一列的所有取值会按行排列,展平后即可得到按「A列所有值+B列所有值+C列所有值」顺序排列的一维数组,正好对应目标结构的行值顺序
  • 列名生成逻辑完全适配源数据行数:每个原列名对应N个新列(N为源数据行数),第一个新列保留原列名,后续依次追加-1、-2后缀,源数据行数变化时不需要手动修改规则
  • 最后将展平的一维数组包装为单行DataFrame,绑定生成好的列名即可得到结果

内容的提问来源于stack exchange,提问作者Anonymous Entity

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 12:39:22