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

如何在Pandas中横向拼接含重复索引的DataFrame?

Pandas合并两个DataFrame的实现方法

根据你需要的合并效果,以下是Pandas中几种常用的合并方式:

1. 纵向拼接(合并行)

当两个DataFrame的列结构完全一致,需要将行堆叠在一起时,使用pd.concat()并指定axis=0:

import pandas as pd

# 示例数据
df1 = pd.DataFrame({'列1': [1, 2], '列2': [3, 4]})
df2 = pd.DataFrame({'列1': [5, 6], '列2': [7, 8]})

# 纵向合并,重置索引避免重复
merged_df = pd.concat([df1, df2], ignore_index=True)

2. 横向拼接(合并列)

按索引合并列

如果要基于索引将两个DataFrame的列拼接在一起,使用pd.concat()并指定axis=1:

df1 = pd.DataFrame({'列1': [1, 2], '列2': [3, 4]}, index=['行1', '行2'])
df2 = pd.DataFrame({'列3': [5, 6], '列4': [7, 8]}, index=['行1', '行2'])

merged_df = pd.concat([df1, df2], axis=1)

按指定字段关联合并(类SQL JOIN)

当需要基于某个共同字段关联两个DataFrame时,使用pd.merge(),支持内连接、左连接、右连接、外连接四种模式:

df1 = pd.DataFrame({'关联键': ['a', 'b', 'c'], '数据1': [1, 2, 3]})
df2 = pd.DataFrame({'关联键': ['b', 'c', 'd'], '数据2': [4, 5, 6]})

# 内连接(默认):仅保留双方都有的关联键记录
inner_merge = pd.merge(df1, df2, on='关联键')
# 左连接:保留df1所有记录,匹配df2对应数据,无匹配则补NaN
left_merge = pd.merge(df1, df2, on='关联键', how='left')
# 右连接:保留df2所有记录,匹配df1对应数据,无匹配则补NaN
right_merge = pd.merge(df1, df2, on='关联键', how='right')
# 外连接:保留所有记录,无匹配则补NaN
outer_merge = pd.merge(df1, df2, on='关联键', how='outer')

3. 按索引快速合并

如果习惯基于索引合并,也可以使用df.join()(默认左连接):

df1 = pd.DataFrame({'列1': [1, 2], '列2': [3, 4]}, index=['行1', '行2'])
df2 = pd.DataFrame({'列3': [5, 6]}, index=['行1', '行2'])

merged_df = df1.join(df2)

如果你的目标结果有特殊格式(比如特定列填充、多键关联等),可以根据实际场景调整上述方法的参数,比如指定suffixes处理重名列、用fillna填充缺失值等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 12:17:24