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

如何将两个Pandas DataFrame合并为含列名标识的目标结构?

合并Pandas DataFrame并生成指定结构的解决方案

嘿,这个需求咱们可以通过Pandas的堆叠(stack)和合并操作轻松实现,我给你一步步拆解清楚:

第一步:处理数值型DataFrame(df)

先把df的列转成行,同时保留原列名作为新的Name列,数值对应Cost列:

# 堆叠列到行,重置索引后调整列名
df_stacked = df.stack().reset_index()
df_stacked.columns = ['行索引', 'Name', 'Cost']
# 删掉不需要的行索引列
df_stacked = df_stacked.drop('行索引', axis=1)

第二步:处理字符串型DataFrame(df2)

用同样的方式处理df2,提取出Serial列和对应的Name列:

df2_stacked = df2.stack().reset_index()
df2_stacked.columns = ['行索引', 'Name', 'Serial']
df2_stacked = df2_stacked.drop('行索引', axis=1)

第三步:合并两个处理后的结果

因为两个堆叠后的DataFrame的Name列和行顺序完全匹配,直接拼接列就可以得到目标结构:

# 按列拼接,只保留需要的字段
df3 = pd.concat([df2_stacked['Serial'], df_stacked['Cost'], df_stacked['Name']], axis=1)

更简洁的一行式写法

如果想省点代码,也可以直接把两步堆叠和合并放在一起:

import pandas as pd

df = pd.DataFrame({'A': [1,2,3,4], 'B': [5,6,7,8], 'C': [9,10,11,12]})
df2 = pd.DataFrame({'A': ['a','b','c','d'], 'B': ['e','f','g','h'], 'C': ['i','j','k','l']})

# 直接堆叠两个DataFrame,重组列名后筛选目标字段
df3 = pd.concat([df2.stack(), df.stack()], axis=1).reset_index()
df3.columns = ['_', 'Name', 'Serial', 'Cost']
df3 = df3[['Serial', 'Cost', 'Name']].reset_index(drop=True)

运行上面的代码后,你就能得到完全符合需求的df3啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:34:46