如何处理含非唯一多重索引的拼接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
相关产品推荐
相关产品推荐

