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

如何处理含非唯一多重索引的拼接DataFrame?

处理带有非唯一多重索引的DataFrame拼接问题

没问题,我来帮你搞定这个非唯一多重索引的DataFrame拼接需求。你提供的代码已经能正常运行,我来给你拆解下逻辑,让你更清楚背后的操作:

首先是可直接运行的完整代码:

import pandas as pd

# 创建第一个DataFrame
raw_data = { 'type_1': [1, 1], 'id_1': ['2', '3'], 'name_1': ['Alex', 'Amy']}
df_a = pd.DataFrame(raw_data, columns = ['type_1', 'id_1', 'name_1'])

# 创建第二个DataFrame
raw_datab = { 'type_2': [1, 1], 'id_2': ['4', '5'], 'name_2': ['Billy', 'Brian']}
df_b = pd.DataFrame(raw_datab, columns = ['type_2', 'id_2', 'name_2'])

# 为两个DataFrame设置多重索引,并放入列表
dfs = [df_a.set_index(['type_1','id_1']), df_b.set_index(['type_2','id_2'])]

# 按列拼接两个带索引的DataFrame
df = pd.concat(dfs, axis=1)
print(df)

代码逻辑说明:

  • 第一步分别构建了两个独立的DataFrame df_a 和 df_b,各自包含类型、ID和名称三类字段;
  • 然后对两个DataFrame设置多重索引:df_a以type_1和id_1作为索引,df_b以type_2和id_2作为索引,这一步是核心——让后续拼接能基于这些索引键来对齐数据;
  • 最后用pd.concat()指定axis=1(按列拼接),将两个DataFrame的列合并,索引不匹配的位置会自动填充NaN。

运行输出示例:

执行代码后,你会得到如下完整格式的输出:

name_1 name_2
1 2        Amy    NaN
   3        Alex   NaN
   4        NaN    Billy
   5        NaN    Brian

因为两个DataFrame的索引组合(type+id)没有重叠,所以各自的名称字段只会在对应索引行有值,其余位置显示缺失值,这完全符合多重索引下的拼接预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:52:40