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

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

Để giảm một cấp từ chỉ mục cột nhiều cấp, hãy sử dụng column.droplevel (). 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'])]

# forming multiindex dataframe
dataFrame = pd.DataFrame(np.random.randn(9, 3), index=arr,columns=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)

Ví dụ

Sau đây là mã

import numpy as np
import pandas as pd

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

# multiindex array
arr = [np.array(['car', 'car', 'car','bike','bike', 'bike', 'truck', 'truck', 'truck']),

np.array(['valueA', 'valueB', 'valueC','valueA', 'valueB', 'valueC','valueA', 'valueB', 'valueC'])]

# forming multiindex dataframe
dataFrame = pd.DataFrame(np.random.randn(9, 3), index=arr,columns=items)

# labelling index
dataFrame.index.names = ['level 0', 'level 1']
print"DataFrame...\n",dataFrame

print"\nDropping a level...\n";
dataFrame.columns = dataFrame.columns.droplevel(0)

print"Updated 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 3
level 0  level 1
car      valueA   1.691127   0.315145  -0.695925
         valueB  -2.077182  -2.027643  -0.523965
         valueC   1.021402  -0.384421   0.640215
bike     valueA  -2.271217   0.197185   0.304847
         valueB   0.119615  -0.520491  -0.746547
         valueC   1.856888  -0.491540  -1.754604
truck    valueA   0.829854  -0.204102  -1.130511
         valueB   0.310692   0.119087  -0.244919
         valueC  -0.245934  -2.141639  -1.298278

Dropping a level...

Updated DataFrame..
                      Col 1      Col 2       Col 3
                      Col 1      Col 2       Col 3
level 0  level 1
car      valueA 1.691127   0.315145   -0.695925
         valueB   -2.077182  -2.027643   -0.523965
         valueC    1.021402  -0.384421    0.640215
bike     valueA   -2.271217   0.197185    0.304847
         valueB    0.119615  -0.520491   -0.746547
         valueC    1.856888  -0.491540   -1.754604
truck    valueA    0.829854  -0.204102   -1.130511
         valueB    0.310692   0.119087   -0.244919
         valueC   -0.245934  -2.141639   -1.298278