Tôi có DataFrame với các cột MultiIndex trông như thế này:Làm cách nào để chỉ chọn các cột cụ thể từ một DataFrame với các cột MultiIndex?
# sample data
col = pd.MultiIndex.from_arrays([['one', 'one', 'one', 'two', 'two', 'two'],
['a', 'b', 'c', 'a', 'b', 'c']])
data = pd.DataFrame(np.random.randn(4, 6), columns=col)
data
những cách đơn giản, thích hợp của việc lựa chọn chỉ các cột cụ thể (ví dụ ['a', 'c']
, không phải là một range) từ cấp độ thứ hai là gì?
Hiện nay tôi đang làm việc đó như thế này:
import itertools
tuples = [i for i in itertools.product(['one', 'two'], ['a', 'c'])]
new_index = pd.MultiIndex.from_tuples(tuples)
print(new_index)
data.reindex_axis(new_index, axis=1)
Nó không cảm thấy giống như một giải pháp tốt, tuy nhiên, vì tôi phải bust ra itertools
, xây dựng khác MultiIndex bằng tay và sau đó reindex (và mã thực sự của tôi thậm chí còn lộn xộn hơn, vì các danh sách cột không đơn giản để tìm nạp). Tôi khá chắc chắn phải có một số cách ix
hoặc xs
cách thực hiện việc này, nhưng mọi thứ tôi đã thử đều dẫn đến lỗi.
Bạn đã thử sử dụng từ điển chưa? – darmat
Không, tôi chưa có. Bạn có nghĩa là để nhanh chóng xây dựng MultiIndex? Nếu vậy, đó không phải là vấn đề - tôi muốn tránh nó và chỉ mục trực tiếp với một cái gì đó như 'data.xs (['a', 'c'], axis = 1, level = 1)' – metakermit
giả sử điều này: – darmat