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

请求实现将多行DataFrame展平为指定格式的单行DataFrame

如何将多行DataFrame重塑为单行带组合列名的DataFrame

没问题,这事儿用Python的pandas库就能轻松搞定!我给你一步步拆解实现方法:

1. 先构造原始的DataFrame

首先我们先把你给出的多行数据转换成pandas的DataFrame结构:

import pandas as pd

# 构造原始数据
data = {
    1: ["Apple", "Car", "House"],
    2: ["Orange", "Truck", "Apartment"],
    3: ["Grape", "Plane", "Garage"]
}
original_df = pd.DataFrame(data, index=["A", "B", "C"])

此时original_df的结构和你给出的完全一致:

1         2       3
A  Apple    Orange   Grape
B    Car     Truck   Plane
C  House  Apartment  Garage

2. 重塑为目标格式的单行DataFrame

接下来通过几步操作把它转成你需要的结构:

# 堆叠数据,将列轴转换为行轴,得到带多层索引的Series
stacked_series = original_df.stack()

# 重新命名索引:将原行索引和列名组合成"列名_行索引"的格式
stacked_series.index = [f"{col}_{row}" for row, col in stacked_series.index]

# 将Series转换为单行DataFrame,并重置索引
target_df = stacked_series.to_frame().T.reset_index(drop=True)

运行完这段代码后,target_df就是你想要的结果:

1_A     2_A    3_A 1_B   2_B    3_B   1_C       2_C     3_C
0  Apple  Orange  Grape Car  Truck  Plane House  Apartment  Garage

步骤解释

  • stack():把DataFrame的列"堆叠"到行维度,生成一个以(原行索引, 原列名)为多层索引的Series,这样我们就能把每个单元格的位置信息保留下来。
  • 重新命名索引:遍历多层索引的元组,把列名放在前面、行索引放在后面,拼接成你需要的列名格式。
  • to_frame().T:把Series转换成单列DataFrame后转置,变成单行;reset_index(drop=True)则是去掉默认的索引列,让结果更符合你的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:11:36