2015-03-30 33 views
7

Tôi có một khung dữ liệu results dạngPandas MultiIndex: Chia tất cả các cột của một cột

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

và tôi đã cố gắng chia tất cả (hai đầu) cột bởi người cuối cùng. nỗ lực của tôi là

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

Nhưng tôi nhận được

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

Mà tôi không nhận được: Có tên chồng chéo trong chỉ mục:

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

Có lẽ một cách tốt hơn để làm bộ phận này? Tôi có cần cần để đặt lại chỉ mục không?

Trả lời

8

Bạn cần phải xác định các trục cho sự phân chia (với phương pháp 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 

Mặc định là trục = 1 và kết quả cột và tên chỉ số trọng lượng không chồng chéo, do đó thông báo lỗi.

+0

Tôi chỉ nhận 'ValueError: Hình dạng của các giá trị được truyền là (1, 8), các chỉ số ngụ ý (4, 8)'. Làm thế nào để bạn ánh xạ nó tới tất cả các cột? – josh

+1

@josh Tôi nghi ngờ bạn muốn sử dụng thứ gì đó có kích thước (8,) thay vì (1, 8)? –

Các vấn đề liên quan