2015-07-30 12 views
6

Puoi aiutarci ad aggiungere due dataframe multiindex panda? Cercando di aggiungere df_future a df_current. AZIENDA e DATA sono gli indici.Aggiungi due dataframe pindas multiindicati

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 

Sulla base di questi DFS, vogliono vedere ..

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 

risposta

6

Usa concat a concate nate le due DataFrames, e sort_index per riordinare il primo livello di indice:

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 

Nota: La mia risposta originale utilizzato sortlevel che ora è deprecato. Come firelynx shows, utilizzare invece sort_index.

+0

Mr unutbu, sei Stupefacente! Grazie mille! –

3

L'accodamento in panda è chiamato concat. E si fa con the pd.concat function.

La funzione concat funziona, non importa se si dispone di multiindex o no

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 

E se l'ordinamento è un problema, basta usare:

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

Non conoscevo la parte df.sort_index(). Grazie! –

Problemi correlati