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
相关产品推荐
相关产品推荐

