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

在Pandas中基于指定列垂直匹配合并DataFrame

解决DataFrame垂直合并问题

你的核心需求是:将df2中与df1Domain列匹配的行,转换成和df1一致的结构后,进行垂直拼接。之前的concat和merge用法都没贴合这个需求,以下是正确的实现步骤:

步骤1:预处理df2,使其结构与df1对齐

需要把df2中符合Domain='MCS'的行,调整成和df1一样的列结构(ID、Group_N、Domain):

# 筛选Domain匹配的行
filtered_df2 = df2[df2['Domain'] == 'MCS']
# 重命名User_Group为Group_N,统一列名
filtered_df2 = filtered_df2.rename(columns={'User_Group': 'Group_N'})
# 添加ID列,值与df1保持一致为1
filtered_df2['ID'] = 1
# 调整列顺序,和df1完全匹配
processed_df2 = filtered_df2[['ID', 'Group_N', 'Domain']]

步骤2:垂直拼接两个DataFrame

用pd.concat把处理后的df2和原df1拼接:

res_df = pd.concat([df1, processed_df2], ignore_index=True)

运行后得到的结果就是你预期的输出:

ID Group_N Domain
0   1  CAN_US    MCS
1   1  ITL_US    MCS
2   1  MEX_US    MCS
3   1  KER_US    MCS
4   1  MKL_US    MCS
5   1  GAA_US    MCS

为什么之前的方法不行?

  • pd.concat([df1, df2], join='outer', axis=0):df2没有ID和Group_N列,拼接后会出现大量NaN值,不符合需求
  • pd.merge(df1, df2, on="Domain", how="inner"):merge是做横向关联,会把两表的列合并,产生的是笛卡尔积式的结果(比如每一行df1的记录会和df2中匹配的行关联,生成更多行),不是你要的垂直拼接效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:12:55