Объединение мультииндексного фрейма данных и одноиндексного фрейма данных - PullRequest
0 голосов
/ 10 июня 2018

У меня есть мультииндексный фрейм данных и один индексный панда данных.Я хочу присоединиться к ним на основе ключевого атрибута «KeyColumn».Но я не мог найти оптимальный способ сделать это.Пожалуйста, дайте мне знать, если кто-нибудь может мне помочь с этим.Благодарю.

Фрейм данных с одним индексом

KeyColumn Column2 Column3 Column4 AttibuteColumn ValueColumn

   pk1    col2    col3    col4             AC          NO
   pk2    col2    col3    col4          COLOR        BLUE
   pk2    col2    col3    col4          COLOR         RED
   pk4    col2    col3    col4          COLOR       GREEN
   pk5    col2    col3    col4            CAR   HATCHBACK
   pk6    col2    col3    col4            CAR       SEDAN
   pk7    col2    col3    col4            CAR         SUV
   pk8    col2    col3    col4            CAR    2 SEATER
   pk9    col2    col3    col4             AC         YES
  pk10    col2    col3    col4             AC          NO

Многоуровневый индекс

                ValueColumn   

 AttibuteColumn          AC        CAR  COLOR

 KeyColumn                                   
 pk1                     NO       None   None
 pk10                    NO       None   None
 pk2                   None       None   BLUE
 pk4                   None       None  GREEN
 pk5                   None  HATCHBACK   None
 pk6                   None      SEDAN   None
 pk7                   None        SUV   None
 pk8                   None   2 SEATER   None
 pk9                    YES       None   None

1 Ответ

0 голосов
/ 10 июня 2018

Используйте join, но другой DataFrame без MultiIndex:

df = df1.join(df2.xs('ValueColumn', axis=1, level=0), on=['KeyColumn'])

Или:

df = df1.join(df2['ValueColumn'], on=['KeyColumn'])  

Или:

df2.columns = df2.columns.droplevel(0)
df = df1.join(df2, on=['KeyColumn'])  
...