Панды, какие слияния, присоединения или конкат для мультииндекс - PullRequest
0 голосов
/ 01 марта 2019

У меня есть фрейм данных с мультииндексом:

     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

Какой тип объединения, слияния и объединения следует использовать?Я не против, если мне придется заполнять потом, но я хотел бы сохранить нетронутым индекс мультикадра.

Большое спасибо

1 Ответ

0 голосов
/ 01 марта 2019

Вам нужно назвать свои уровни индекса, чтобы вы могли ссылаться на них в слиянии.Также конвертируйте Series в DataFrame:

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
...