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

Python Pandas - Cách sắp xếp MultiIndex ở cấp cụ thể theo thứ tự giảm dần

Để tạo MultiIndex, hãy sử dụng from_arrays () phương pháp. Tuy nhiên, để sắp xếp MultiIndex ở một cấp cụ thể, hãy sử dụng multiIndex.sortlevel () trong Pandas. Đặt cấp độ làm đối số. Để sắp xếp theo thứ tự giảm dần, hãy sử dụng nút tăng dần và đặt thành Sai .

Đầu tiên, hãy nhập các thư viện được yêu cầu -

import pandas as pd

MultiIndex là một đối tượng chỉ mục đa cấp hoặc phân cấp cho các đối tượng gấu trúc. Tạo mảng -

arrays = [[2, 4, 3, 1], ['Peter', 'Chris', 'Andy', 'Jacob']]

Tham số "tên" đặt tên cho mỗi cấp chỉ mục. From_arrays () được sử dụng để tạo MultiIndex -

multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))

Sắp xếp MultiIndex. Mức cụ thể để sắp xếp được đặt dưới dạng tham số, tức là mức 1 ở đây. Chúng tôi sắp xếp theo thứ tự giảm dần bằng cách sử dụng thứ tự "tăng dần" với giá trị "Sai" -

print("\nSort MultiIndex at the requested level in descending order...\n",multiIndex.sortlevel(1, ascending=False))

Ví dụ

Sau đây là mã -

import pandas as pd

# MultiIndex is a multi-level, or hierarchical, index object for pandas objects
# Create arrays
arrays = [[2, 4, 3, 1], ['Peter', 'Chris', 'Andy', 'Jacob']]

# The "names" parameter sets the names for each of the index levels
# The from_arrays() is used to create a MultiIndex
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))

# display the MultiIndex
print("The Multi-index...\n",multiIndex)

# get the levels in MultiIndex
print("\nThe levels in Multi-index...\n",multiIndex.levels)

# Sort MultiIndex
# The specific level to sort is set as a parameter i.e. level 1 here
# We have sort in descending order using the "ascending" order with value "False"
print("\nSort MultiIndex at the requested level in descending order...\n",multiIndex.sortlevel(1, ascending=False))

Đầu ra

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

The Multi-index...
MultiIndex([(2, 'Peter'),
            (4, 'Chris'),
            (3,  'Andy'),
            (1, 'Jacob')],
            names=['ranks', 'student'])

The levels in Multi-index...
   [[1, 2, 3, 4], ['Andy', 'Chris', 'Jacob', 'Peter']]

Sort MultiIndex at the requested level in descending order...
(MultiIndex([(2, 'Peter'),
             (1, 'Jacob'),
             (4, 'Chris'),
             (3,  'Andy')],
             names=['ranks', 'student']), array([0, 3, 1, 2], dtype=int64))