2015-03-30 37 views
7

Ho un frame di dati results del moduloPandas MultiIndex: Dividere tutte le colonne da una colonna

    TOTEXPPQ  TOTEXPCQ  FINLWT21 
year quarter           
13 1  9.183392e+09 5.459961e+09 1271559.398 
    2  2.907887e+09 1.834126e+09 481169.672 

e cercavo di dividere tutti (prime due colonne) l'ultimo. Il mio tentativo è stato

weights = results.pop('FINLWT21') 
results/weights 

ma ottengo

ValueError: cannot join with no level specified and no overlapping names 

Il che non ottengo: Ci sono nomi sovrapposti nell'indice:

weights.head() 
year quarter 
13 1   1271559.398 
     2   481169.672 

c'è forse un modo migliore per farlo questa divisione? Devo necessario per reimpostare l'indice?

risposta

8

È necessario specificare l'asse per il divario (con il metodo div):

In [11]: results.div(weights, axis=0) 
Out[11]: 
       TOTEXPPQ  TOTEXPCQ 
year quarter 
13 1  7222.149445 4293.909517 
    2  6043.371329 3811.807158 

Il valore predefinito è asse = 1 e il risultato colonne e nomi di indice pesi non si sovrappongono, quindi il messaggio di errore.

+0

Ho appena ottenuto l'errore ValueError: la forma dei valori passati è (1, 8), gli indici implicano (4, 8) '. Come lo si mappa su tutte le colonne? – josh

+1

@josh Sospetto che vogliate usare qualcosa che è size (8,) piuttosto che (1, 8)? –

Problemi correlati