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

如何用Python Pandas合并3个Dataframe生成Excel单列

将多DataFrame指定列合并为单列的解决方法

原代码核心问题

你的代码没有真正利用df_one和df_two,只是在df_main内重复创建列,且合并操作是和自身重复合并,完全无法实现多列合并为单列的需求。以下分两种常见场景给出解决方案:


场景1:把三个DataFrame的指定列纵向堆叠成一个单列

将三个表中生成的拼接文本列,所有行合并成一个单独的列:

import pandas as pd

# 读取文件
df_main = pd.read_excel('/Users/admin/Documents/Product_Key.xlsx', sheet_name='Sheet1')
df_one = pd.read_excel('/Users/admin/Documents/Product1.xlsx', sheet_name='Sheet1', usecols="A:E")
df_two = pd.read_excel('/Users/admin/Documents/Product2.xlsx', sheet_name='Sheet1', usecols="A:E")

# 为每个表生成拼接文本列
def create_combined_col(df):
    return df['Label'].astype(str) + '_' + df['Type'].astype(str) + '_' + df['Serial ID'].astype(str) \
           + '_' + df['Weight'].astype(str) + '_' + df['Row'].astype(str)

df_main['combined'] = create_combined_col(df_main)
df_one['combined'] = create_combined_col(df_one)
df_two['combined'] = create_combined_col(df_two)

# 纵向堆叠三个列成单列
df_single_col = pd.concat([df_main['combined'], df_one['combined'], df_two['combined']], ignore_index=True)

# 保存到Excel
df_single_col.to_excel('/Users/admin/Documents/New_Product_Key.xlsx', sheet_name="Sheet1", index=False, header=['Combined_Text'])

场景2:在主表中,将每行匹配的三个表内容拼接成单个长文本列

如果需要基于共同字段(如Time #)匹配三个表的对应行,再把每行的三个拼接文本合并成一个长文本列:

import pandas as pd

# 读取文件
df_main = pd.read_excel('/Users/admin/Documents/Product_Key.xlsx', sheet_name='Sheet1')
df_one = pd.read_excel('/Users/admin/Documents/Product1.xlsx', sheet_name='Sheet1', usecols="A:E")
df_two = pd.read_excel('/Users/admin/Documents/Product2.xlsx', sheet_name='Sheet1', usecols="A:E")

# 按Time #字段关联三个表
df_merged = df_main.merge(df_one, on='Time #', suffixes=('_main', '_one'))
df_merged = df_merged.merge(df_two, on='Time #', suffixes=('', '_two'))

# 生成单个长文本列,可自定义分隔符
df_merged['combined_text'] = (
    f"{df_merged['Label_main']}_{df_merged['Type_main']}_{df_merged['Serial ID_main']}_{df_merged['Weight_main']}_{df_merged['Row_main']}"
    + ' | '
    + f"{df_merged['Label_one']}_{df_merged['Type_one']}_{df_merged['Serial ID_one']}_{df_merged['Weight_one']}_{df_merged['Row_one']}"
    + ' | '
    + f"{df_merged['Label']}_{df_merged['Type']}_{df_merged['Serial ID']}_{df_merged['Weight']}_{df_merged['Row']}"
)

# 保存结果,仅保留合并后的单列(或按需保留其他列)
df_merged[['combined_text']].to_excel('/Users/admin/Documents/New_Product_Key.xlsx', sheet_name="Sheet1", index=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 01:52:03