请求实现将多行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
相关产品推荐
相关产品推荐

