如何使用Pandas将DataFrame的两列数据重塑为单行?
没问题,我来帮你搞定这个Pandas数据重塑的需求!以下是几种实用的方法,你可以根据自己的原始数据结构来选择:
将Pandas DataFrame两列重塑为单行的具体方案
首先先模拟一个常见的原始DataFrame结构(如果和你的实际数据有出入,调整参数即可):
import pandas as pd # 示例:两列多行的原始数据 df = pd.DataFrame({ '特征列': ['身高', '体重', '年龄'], '数值列': [175, 65, 28] }) print("原始DataFrame:") print(df)
输出的原始数据长这样:
特征列 数值列 0 身高 175 1 体重 65 2 年龄 28
方法1:保留列名关联的结构化重塑
适合需要明确标注“原列名+行号”的场景,比如把身高、体重这类特征和对应数值绑定成单行的新列:
# 给每行加一个行号标识,方便后续展开 df['行标记'] = df.index # 转成宽表后再转成单行 result = df.set_index('行标记').unstack().to_frame().T # 重命名列名,让可读性更强(可选步骤) result.columns = [f"{原列名}_{行号}" for 原列名, 行号 in result.columns] print("结构化重塑后的单行DataFrame:") print(result)
输出结果:
特征列_0 数值列_0 特征列_1 数值列_1 特征列_2 数值列_2 0 身高 175 体重 65 年龄 28
方法2:快速展平成单行(不保留原列关联)
如果只是想把两列的所有数据单纯拼成一行,不需要复杂的列名关联,可以用这个简洁方法:
# 把所有值展平成一维数组,再转成单行DataFrame result = pd.DataFrame([df.values.flatten()]) # 自定义新列名(可选) result.columns = [f"数据项{i+1}" for i in range(len(result.columns))] print("快速展平后的单行DataFrame:") print(result)
输出结果:
数据项1 数据项2 数据项3 数据项4 数据项5 数据项6 0 身高 175 体重 65 年龄 28
方法3:针对两行两列的特殊场景
如果你的原始数据是两行两列的结构(比如只有两组数据),比如:
df = pd.DataFrame({ '列1': ['张三', '李四'], '列2': ['男', '女'] }, index=[0,1])
想要合并成单行张三, 男, 李四, 女,可以用更直接的方式:
result = pd.DataFrame(df.T.unstack().values.reshape(1, -1)) print(result)
输出结果:
0 1 2 3 0 张三 男 李四 女
如果你的原始数据结构和上面的示例不同,可以补充具体的DataFrame结构,我再帮你调整方案哦!
内容的提问来源于stack exchange,提问作者Redge




