首页 > 解决方案 > Pandas 对 multindex 进行什么样的合并、连接或连接

问题描述

我有带有多重索引的数据框:

     A | B
1 0  a   b
2 0  c   d
  1  e   f
3 0  g   h
  1  i   j
  2  k   l

我还有一个匹配索引级别为 0 的系列

1 m
2 n
3 o

现在,我想将此系列的值添加到数据框中

     A | B | C
1 0  a   b   m
2 0  c   d   n
  1  e   f   n
3 0  g   h   o
  1  i   j   o
  2  k   l   o

我应该使用什么样的连接、合并、连接?我不介意事后是否必须填写,但我想保持数据框的多索引完好无损。

非常感谢

标签: pythonpandasmulti-index

解决方案


您需要命名索引级别,以便在合并中引用它们。还将您的转换SeriesDataFrame

df.index.names=['idx1', 'idx2']
df.merge(s.to_frame('C'), left_on='idx1', right_index=True)

           A  B  C
idx1 idx2         
1    0     a  b  m
2    0     c  d  n
     1     e  f  n
3    0     g  h  o
     1     i  j  o
     2     k  l  o

也可以删除索引级别之一,然后加入Series并添加索引级别:

df.reset_index(1).join(s.rename('C')).set_index('level_1', append=True)

           A  B  C
  level_1         
1 0        a  b  m
2 0        c  d  n
  1        e  f  n
3 0        g  h  o
  1        i  j  o
  2        k  l  o

推荐阅读