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
相关产品推荐
相关产品推荐

