如何将Pandas DataFrame的多行转换为单行多列形式?
实现多行DataFrame转单行多列的方法
假设你有如下初始DataFrame:
| A | B |
|---|---|
| 1 | 2 |
| 3 | 4 |
| 5 | 6 |
想要转换成如下单行多列的形式:
| A | B | A | B | A | B |
|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 |
下面是两种可行的实现方式:
方法一:展平数据+构造重复列名
直接提取DataFrame的数值并展平,再根据原列名重复对应次数生成新列名,最后构建新的DataFrame:
import pandas as pd # 初始化原始DataFrame df = pd.DataFrame({'A': [1,3,5], 'B': [2,4,6]}) # 展平所有数据并转为单行格式 flattened_data = df.values.flatten().reshape(1, -1) # 生成重复的列名:原列名重复与行数相同的次数 new_columns = df.columns.tolist() * len(df) # 创建目标格式的DataFrame result_df = pd.DataFrame(flattened_data, columns=new_columns) print(result_df)
方法二:横向拼接单行数据
遍历原DataFrame的每一行,将其转为单行DataFrame后横向拼接:
import pandas as pd df = pd.DataFrame({'A': [1,3,5], 'B': [2,4,6]}) # 逐个提取单行并横向拼接 result_df = pd.concat([df.iloc[i:i+1].reset_index(drop=True) for i in range(len(df))], axis=1) print(result_df)
这两种方法都能高效实现需求,相比单独使用iloc提取,逻辑更简洁直接。
内容的提问来源于stack exchange,提问作者Adnan Abid
相关产品推荐
相关产品推荐

