2015-03-30 16 views
7

Ich habe einen Datenrahmen results des FormularsPandas Multiindex: Dividieren alle Spalten durch eine Spalte

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

und ich versuchte, alle (die ersten beiden) Spalten, die durch die letzte zu unterteilen. Mein Versuch war

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

Aber ich bekomme

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

Was ich nicht bekommen: Es gibt überlappende Namen im Index:

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

Gibt es vielleicht einen besseren Weg zu tun diese Teilung? Muss ich den Index zurücksetzen?

Antwort

8

Sie haben die Achse für die Kluft zu spezifizieren (mit div Methode):

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

Die Standardeinstellung ist Achse = 1, und das Ergebnis Spalten und Indexnamen Gewichte nicht überlappen, damit die Fehlermeldung.

+0

Ich bekomme nur 'ValueError: Form der übergebenen Werte ist (1, 8), Indizes implizieren (4, 8)'. Wie ordnen Sie es allen Spalten zu? – josh

+1

@josh Ich vermute, dass Sie etwas verwenden möchten, das Größe (8,) und nicht (1, 8) ist? –

Verwandte Themen