如何在Pandas中按公共列的并集横向合并两个DataFrame?
Pandas实现指定格式的DataFrame合并
你可以通过**多级列(MultiIndex)**结合外连接的方式实现这个需求,具体步骤如下:
步骤1:准备示例数据
先还原你给出的两个DataFrame:
import pandas as pd df1 = pd.DataFrame({ 'id': [1,2,4], 'name': ['a','b','c'], 'val': [23,90,72] }).set_index('id') df2 = pd.DataFrame({ 'id': [1,3,4], 'name': ['d','e','f'], 'val': [88,12,11] }).set_index('id')
步骤2:给列添加层级标签
为两个DataFrame的列分别加上df1和df2的顶层标签,形成多级列结构:
df1.columns = pd.MultiIndex.from_product([['df1'], df1.columns]) df2.columns = pd.MultiIndex.from_product([['df2'], df2.columns])
步骤3:外连接合并
使用join方法进行外连接,这样会保留所有id,缺失的位置自动填充NaN:
result = df1.join(df2, how='outer')
步骤4:调整列的顺序(可选)
如果需要让df1的name、val和df2的name、val按你给出的顺序排列,可以手动调整列顺序:
result = result[['df1', 'df2']].reindex(columns=['name', 'val'], level=1)
最终输出的result就是你想要的格式:
df1 df2 name val name val id 1 a 23 d 88 2 b 90 NaN NaN 3 NaN NaN e 12 4 c 72 f 11
内容的提问来源于stack exchange,提问作者Aayush Mohan Sinha
相关产品推荐
相关产品推荐

