2015-07-30 22 views
6

Czy możesz pomóc w dołączeniu dwóch ramek danych z wielopunktowymi pandami? Próbujesz dołączyć df_future do df_current. FIRMA i DATA to indeksy.Dołącz dwie wielopekseksowe pandy danych o numerach

df_current

      VALUE 
COMPANY  DATE    
      7/27/2015  1 
A   7/28/2015  2 
      7/29/2015  3 
      7/30/2015  4 
      7/27/2015  11 
B   7/28/2015  12 
      7/29/2015  13 
      7/30/2015  14 

df_future

      VALUE 
COMPANY  DATE    
A   8/1/2015  5 
      8/2/2015  6 
B   8/1/2015  15 
      8/2/2015  16 

podstawie tych DFS, aby zobaczyć ..

df_current_and_future

      VALUE 
COMPANY  DATE    
      7/27/2015  1 
      7/28/2015  2 
A   7/29/2015  3 
      7/30/2015  4 
      8/1/2015  5 
      8/2/2015  6 
      7/27/2015  11 
      7/28/2015  12 
B   7/29/2015  13 
      7/30/2015  14 
      8/1/2015  15 
      8/2/2015  16 

Odpowiedz

6

Zastosowanie concat do concate Nate dwa DataFrames i sort_index aby zmienić kolejność pierwszy poziom indeksu:

In [167]: pd.concat([df_current, df_future]).sort_index() 
Out[167]: 
        VALUE 
COMPANY DATE    
A  7/27/2015  1 
     7/27/2015  11 
     7/28/2015  2 
     7/29/2015  3 
     7/30/2015  4 
     8/1/2015  5 
     8/2/2015  6 
B  7/28/2015  12 
     7/29/2015  13 
     7/30/2015  14 
     8/1/2015  15 
     8/2/2015  16 

Uwaga: Moja odpowiedź oryginalny używany sortlevel który jest teraz przestarzała. Jako firelynx shows użyj zamiast tego sort_index.

+0

Pan unutbu, jesteś niesamowity! Dziękuję bardzo! –

3

Dołączanie w pandach nazywa się concat. I odbywa się the pd.concat function.

Funkcja concat działa bez względu na to czy masz multiindex czy nie

df = pd.concat([df_current, future]) 

        VALUE 
COMPANY DATE    
A  7/27/2015  1 
     7/28/2015  2 
     7/29/2015  3 
     7/30/2015  4 
     7/27/2015  11 
B  7/28/2015  12 
     7/29/2015  13 
     7/30/2015  14 
A  8/1/2015  5 
     8/2/2015  6 
B  8/1/2015  15 
     8/2/2015  16 

i jeśli sortowanie jest problemem, wystarczy użyć:

df.sort_index() 

        VALUE 
COMPANY DATE    
A  7/27/2015  1 
     7/27/2015  11 
     7/28/2015  2 
     7/29/2015  3 
     7/30/2015  4 
     8/1/2015  5 
     8/2/2015  6 
B  7/28/2015  12 
     7/29/2015  13 
     7/30/2015  14 
     8/1/2015  15 
     8/2/2015  16 
+0

Nie wiedział o części df.sort_index(). Dziękuję Ci! –