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

如何优雅地将Pandas DataFrame中的行重排为列并合并行列

解决Pandas DataFrame行列合并重排的需求

我来帮你搞定这个DataFrame的重排需求!先明确一下你的目标:把原来两行的DataFrame,转成以'A'为索引的单行,同时把原行号和列名组合成新的列名(比如1-PS、2-10PSS这种格式)。

第一步:构造初始DataFrame

先把你给出的初始数据用代码复现出来,方便后续操作:

import pandas as pd

# 初始DataFrame
df = pd.DataFrame(
    data=[[6, 263, 5, 23, 2, 101], [5, 49, 2, 30, 1, 30]],
    index=[1, 2],
    columns=["PS", "PSS", "10PS", "10PSS", "5PS", "5PSS"]
)

第二步:实现重排的简洁方法

这里用stack()配合索引映射的方式,一步到位完成行列合并:

# 堆叠列到内层索引,得到(行号, 列名)的多级索引Series
stacked_series = df.stack()

# 把多级索引转成"行号-列名"的字符串格式
stacked_series.index = stacked_series.index.map(lambda idx: f"{idx[0]}-{idx[1]}")

# 转置成单行DataFrame,并设置新索引为'A'
result_df = stacked_series.to_frame().T
result_df.index = ["A"]

最终结果

运行完上面的代码后,result_df就是你想要的格式:

1-PS  1-PSS  1-10PS  1-10PSS  1-5PS  1-5PSS  2-PS  2-PSS  2-10PS  2-10PSS  2-5PS  2-5PSS
A     6    263       5       23      2     101     5     49       2       30      1      30

步骤解释

  1. df.stack():把原DataFrame的列转成内层索引,此时得到的Series的索引是(行号, 列名)的组合,值对应原单元格的数据;
  2. index.map(...):把每个多级索引元素转换成"行号-列名"的字符串,作为新的列名基础;
  3. to_frame().T:把Series转成DataFrame后再转置,就得到了单行的结构;
  4. index = ["A"]:最后把索引设置为你需要的'A'。

内容的提问来源于stack exchange,提问作者Sukhi Kaur

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:09:04