2014-06-26 49 views
15

Có ai biết nếu có thể sử dụng phương pháp DataFrame.loc để chọn từ một MultiIndex không? Tôi có DataFrame sau đây và muốn có thể truy cập vào các giá trị nằm trong cột 'Dwell', tại các chỉ số của ('at', 1), ('at', 3), ('at', 5), v.v ... (không tuần tự).Sử dụng .loc với một MultiIndex trong gấu trúc?

Tôi rất muốn có thể làm điều gì đó như data.loc[['at',[1,3,5]], 'Dwell'], tương tự như cú pháp data.loc[[1,3,5], 'Dwell'] cho chỉ mục thông thường (trả về chuỗi giá trị Dwell 3 thành viên).

Mục đích của tôi là chọn một tập con tùy ý của dữ liệu, thực hiện một số phân tích chỉ trên tập con đó, và sau đó cập nhật các giá trị mới với kết quả phân tích. Tôi có kế hoạch sử dụng cùng một cú pháp để thiết lập các giá trị mới cho các dữ liệu này, do đó các bộ chọn chuỗi sẽ không thực sự hoạt động trong trường hợp này.

Đây là một lát của DataFrame Tôi đang làm việc với:

  Char Dwell Flight ND_Offset Offset 
QGram               
at 0  a  100  120 0.000000  0 
     1  t  180  0 0.108363  5 
     2  a  100  120 0.000000  0 
     3  t  180  0 0.108363  5 
     4  a  20  180 0.000000  0 
     5  t  80  120 0.108363  5 
     6  a  20  180 0.000000  0 
     7  t  80  120 0.108363  5 
     8  a  20  180 0.000000  0 
     9  t  80  120 0.108363  5 
     10 a  120  180 0.000000  0 

Cảm ơn!

Trả lời

15

Nếu bạn đang ở trên phiên bản 0.14, bạn chỉ có thể vượt qua một tuple để .loc như sau:

df.loc[('at', [1,3,4]), 'Dwell'] 
7

Thử cross-section lập chỉ mục:

In [68]: df.xs('at', level='QGram', drop_level=False).loc[[1,4]] 
Out[68]: 
     Char Dwell Flight ND_Offset Offset 
QGram           
at 1 t 180  0 0.108363  5 
     4 a  20  180 0.000000  0 
Các vấn đề liên quan