Pandas多DataFrame处理:如何生成指定列格式的新DataFrame
Pandas实现指定格式的DataFrame转换
核心思路
你需要将DF2的Name列值与**原列名(Price/Colour)**拼接成新的列名,最终生成一行的宽格式DataFrame。以下是具体实现步骤:
步骤1:构造示例数据
先模拟你的DF2(DF1与DF2的Name列一致,实际处理仅需DF2即可):
import pandas as pd df2 = pd.DataFrame({ 'Name': ['AB', 'BC', 'TB', 'QT', 'YU'], 'Price': [15, 20, 23, 52, 55], 'Colour': ['red', 'white', 'blue', 'orange', 'pink'] })
步骤2:转换格式
通过以下代码直接生成目标DataFrame:
# 将Name设为索引后转置,再拼接索引生成新列名 transformed = df2.set_index('Name').unstack() transformed.index = transformed.index.map(lambda x: f'{x[1]}_{x[0]}') # 转换为一行的DataFrame df_result = transformed.to_frame().T
输出结果
运行后df_result的格式完全符合你的需求:
AB_Price AB_Colour BC_Price BC_Colour TB_Price TB_Colour QT_Price QT_Colour YU_Price YU_Colour 0 15 red 20 white 23 blue 52 orange 55 pink
补充说明
你给出的目标格式里把QT写成了QC,这应该是笔误,代码中保留了原数据的QT,如果需要修改直接调整DF2的Name值即可。
内容的提问来源于stack exchange,提问作者Nilay
相关产品推荐
相关产品推荐

