Nếu tôi xác định một dataframe phân cấp lập chỉ mục như thế này:MultiIndex-có trụ sở tại gấu trúc
import itertools
import pandas as pd
import numpy as np
a = ('A', 'B')
i = (0, 1, 2)
b = (True, False)
idx = pd.MultiIndex.from_tuples(list(itertools.product(a, i, b)),
names=('Alpha', 'Int', 'Bool'))
df = pd.DataFrame(np.random.randn(len(idx), 7), index=idx,
columns=('I', 'II', 'III', 'IV', 'V', 'VI', 'VII'))
các nội dung như sau:
In [19]: df
Out[19]:
I II III IV V VI VII
Alpha Int Bool
A 0 True -0.462924 1.210442 0.306737 0.325116 -1.320084 -0.831699 0.892865
False -0.850570 -0.949779 0.022074 -0.205575 -0.684794 -0.214307 -1.133833
1 True 0.603602 1.387020 -0.830780 -1.242000 -0.321938 0.484271 0.171738
False -1.591730 1.282136 0.095159 -1.239882 0.760880 -0.606444 -0.485957
2 True -1.346883 1.650247 -1.476443 2.092067 1.344689 0.177083 0.100844
False 0.001407 -1.127299 -0.417828 0.143595 -0.277838 -0.478262 -0.350906
B 0 True 0.722781 -1.093182 0.237536 0.457614 -2.500885 0.338257 0.009128
False 0.321022 0.419357 1.161140 -1.371035 1.093696 0.250517 -1.125612
1 True 0.237441 1.739933 0.029653 0.327823 -0.384647 1.523628 -0.009053
False -0.459148 -0.598577 -0.593486 -0.607447 1.478399 0.504028 -0.329555
2 True -0.583052 -0.986493 -0.057788 -0.639798 1.400311 0.076471 -0.212513
False 0.896755 2.583520 1.520151 2.367336 -1.084994 -1.233548 -2.414215
tôi biết làm thế nào để trích xuất các dữ liệu tương ứng với một cột đã cho. Ví dụ. cho cột 'VII'
:
In [20]: df['VII']
Out[20]:
Alpha Int Bool
A 0 True 0.892865
False -1.133833
1 True 0.171738
False -0.485957
2 True 0.100844
False -0.350906
B 0 True 0.009128
False -1.125612
1 True -0.009053
False -0.329555
2 True -0.212513
False -2.414215
Name: VII
Làm thế nào để trích xuất các dữ liệu phù hợp với các bộ sau các tiêu chí:
Alpha=='B'
Alpha=='B'
,Bool==False
Alpha=='B'
,Bool==False
, cột'I'
Alpha=='B'
,Bool==False
, cột'I'
và'III'
Alpha=='B'
,Bool==False
, cột'I'
,'III'
, và tất cả các cột từ'V'
trở điInt
thậm chí còn
(BTW, tôi đã làm RTFM, nhiều hơn một lần thậm chí, nhưng tôi thực sự thấy nó không thể hiểu nổi.)
+1 cho '.xs'. Tôi sẽ thêm rằng sau khi bạn thực hiện các mặt cắt ngang, hãy chọn các cột cụ thể có danh sách nhãn của chúng (ví dụ: 'df.xs (('B',), level = 'Alpha') [list_of_wanted_columns]') –