Computer >> Máy Tính >  >> Lập trình >> Python

Python - Bỏ nhiều cấp từ chỉ mục cột nhiều cấp trong khung dữ liệu Pandas

Để loại bỏ nhiều cấp độ từ chỉ mục cột nhiều cấp độ, hãy sử dụng các cột column.droplevel () nhiều lần. Chúng tôi đã sử dụng Multiindex.from_tuples () được sử dụng để tạo chỉ mục theo cột.

Đầu tiên, hãy tạo chỉ mục theo cột -

 items =pd.MultiIndex.from_tuples ([("Col 1", "Col 1", "Col 1"), ("Col 2", "Col 2", "Col 2"), ("Col 3 "," Col 3 "," Col 3 ")]) 

Tiếp theo, tạo mảng đa chỉ mục và tạo khung dữ liệu đa chỉ mục -

 arr =[np.array (['car', 'car', 'car', 'bike', 'bike', 'bike', 'truck', 'truck', 'truck']), np .array (['valueA', 'valueB', 'valueC', 'valueA', 'valueB', 'valueC', 'valueA', 'valueB', 'valueC'])] # tạo multiindex dataframedataFrame =pd.DataFrame (np.random.randn (9, 3), index =arr, column =items) 

Gắn nhãn chỉ mục -

 dataFrame.index.names =['level 0', 'level 1'] 

Giảm một cấp ở chỉ số 0 -

 dataFrame.columns =dataFrame.columns.droplevel (0) 

Chúng tôi đã xóa một cấp ở chỉ mục 0. Sau khi xóa, cấp 1 bây giờ là cấp 0. Để xóa một cấp khác, chỉ cần sử dụng lại ở trên, tức là

 dataFrame.columns =dataFrame.columns.droplevel (0) 

Sau đây là mã

Ví dụ

 import numpy as npimport pandas as pditems =pd.MultiIndex.from_tuples ([("Col 1", "Col 1", "Col 1"), ("Col 2", "Col 2", "Col 2" ), ("Col 3", "Col 3", "Col 3")]) # multiindex arrayarr =[np.array (['car', 'car', 'car', 'bike', 'bike', 'bike', 'truck', 'truck', 'truck']), np.array (['valueA', 'valueB', 'valueC', 'valueA', 'valueB', 'valueC', 'valueA' , 'valueB', 'valueC'])] # tạo multiindex dataframedataFrame =pd.DataFrame (np.random.randn (9, 3), index =arr, column =items) # labeling indexdataFrame.index.names =['one ',' hai '] print "DataFrame ... \ n", dataFrameprint "\ nDropping a level ... \ n"; dataFrame.columns =dataFrame.columns.droplevel (0) print "Cập nhật DataFrame .. \ n" , dataFrameprint "\ nDropping một cấp độ khác ... \ n"; dataFrame.columns =dataFrame.columns.droplevel (0) print "Đã cập nhật DataFrame .. \ n", dataFrame 

Đầu ra

Điều này sẽ tạo ra kết quả sau -

 DataFrame ... Col 1 Col 2 Col 3 Col 1 Col 2 Col 3 Col 1 Col 2 Col 3one twocar valueA 0,425077 0,020606 1,148156 valueB -1,720355 0,502863 1,184753 valueC 0,373106 1.300935 -0.128404bike valueA -0.648708 0.944725 - 0.593327 value 0,238730 -0,218448 giá trịC 0,313042 -0,628065 0,910935 Giá trị trục A 0,286377 0,478067 -1,000645 giá trịB 1,151793 -0,171433 -0,612346 giá trịC -1,358061 0,735075 0,092700 Cắt một cấp ... Dữ liệu cập nhậtFrame .. Col 1 Col 2 Col 3 Col 3 Col 177 0,020606 1,148156 giá trịB -1,720355 0,502863 1,184753 giá trịC 0,373106 1.300935 -0.128404 giá trị xe A -0,648708 0,944725 0,593327 giá trịB -0,613921 -0,238730 -0,18448 giá trịC 0,313042 -0,628065 0,910935 giá trị trục A 0,286377 0,478067 -1,000645 giá trịB 1,151793 -0,171433 -0,612346 giá trịC -1,358061 0,735075 0,092700 Xoá cấp độ khác ... Dữ liệu cập nhật 1.300935 -0.128404 Giá trị xe máyA -0.648708 0.944725 0.593327 giá trịB -0.613921 -0.238730 -0.218448 giá trịC 0,313042 -0,628065 0,910935 Giá trị trung bìnhA 0,286377 0,478067 -1,000645 giá trịB 1,151793 -0,178061 giá trị