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

Pandas:合并两个DataFrame并统一指定列集合

合并两个列名不同的DataFrame并统一关联列

这问题其实很好解决,你之前尝试的stack()方法更适合处理列转行的场景,而咱们现在需要的是把两个结构逻辑一致但列名不同的表纵向拼接,核心步骤就是先统一列名,再合并。

步骤分解:

  • 分别重命名两个DataFrame的列,让它们对齐成目标的id、time、val
  • 用pandas.concat()纵向合并两个处理后的表
  • 可选:按id排序,让结果和示例一致

完整代码示例:

import pandas as pd

# 先创建示例DataFrame
df1 = pd.DataFrame({
    'a_id': [1,2,3],
    'a_time': [100000000, 200000000, 300000000],
    'a_val': ['a','b','c']
})

df2 = pd.DataFrame({
    'b_id': [1,2,3],
    'b_time': [100000000, 150000000, 350000000],
    'b_val': ['d','e','f']
})

# 重命名df1的列
df1_renamed = df1.rename(columns={
    'a_id': 'id',
    'a_time': 'time',
    'a_val': 'val'
})

# 重命名df2的列
df2_renamed = df2.rename(columns={
    'b_id': 'id',
    'b_time': 'time',
    'b_val': 'val'
})

# 合并两个表,重置索引(可选,让索引从0开始连续)
result = pd.concat([df1_renamed, df2_renamed], ignore_index=True)

# 按id排序,得到和示例一致的顺序(可选)
result = result.sort_values(by='id').reset_index(drop=True)

print(result)

输出结果:

id      time val
0   1  100000000   a
1   1  100000000   d
2   2  200000000   b
3   2  150000000   e
4   3  300000000   c
5   3  350000000   f

这样处理后,结果长度正好是len(df1)+len(df2),完全符合你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:32:06