2015-03-30 136 views
7

除以所有列我具有形式熊貓多指標:由一列

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

的數據幀results和我試圖通過最後一個來劃分所有(前兩個)列。我的嘗試是

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

,但我得到

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

哪個我不明白:有索引重疊名稱:

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

也許有更好的方式來做到這個部門?我是否需要來重置索引?

回答

8

你必須指定軸線爲除(與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 

默認爲軸線= 1,並將結果和權重索引名不重疊,因此錯誤消息。

+0

我剛剛得到'ValueError:傳遞值的形狀是(1,8),索引暗示(4,8)'。你如何將它映射到所有列? – josh 2016-08-16 13:53:57

+1

@josh我懷疑你想使用大小(8,)而不是(1,8)的東西? – 2016-08-16 18:01:45