Python Pandas - 重新命名多級索引標籤



重新命名 Pandas 資料結構的多級索引標籤或名稱是一項常見任務,尤其是在處理分層資料集時。它涉及重新命名多級索引物件的特定標籤、軸名稱或索引級別。Pandas 提供了靈活的方法,例如 rename()rename_axis()set_names(),可以高效地處理這些任務。無論您是想重新命名特定標籤,更改索引或列軸的名稱,還是更新索引級別的整個層次結構,這些方法都非常有用。

在本教程中,您將學習在 Pandas 中重新命名多級索引資料結構的標籤和名稱的各種方法。

使用 rename() 重新命名多級索引標籤

要重新命名多級索引物件中索引或列的標籤,可以使用 pandas 的 DataFame.rename() 方法。此方法使用 indexcolumns 引數,可用於重新命名 pandas 物件中索引或列中的單個標籤。

示例:重新命名特定的索引標籤

這是一個使用 df.rename() 方法重新命名多級索引 DataFrame 的特定索引標籤的基本示例。

import pandas as pd

# Create a MultiIndex object
index = pd.MultiIndex.from_tuples([('A', 'one'), ('A', 'two'), ('A', 'three'),('B', 'one'), ('B', 'two'), ('B', 'three')])
# Create a DataFrame
data = [[1, 2], [3, 4], [1, 1], [5, 6], [7, 8], [2, 2]]
df = pd.DataFrame(data, index=index, columns=['X', 'Y'])

# Display the input DataFrame
print('Original MultiIndexed DataFrame:\n',df)

# Renaming specific index labels
df_renamed = df.rename(index={"A": "aaa", "one": "1"})
print("Renamed DataFrame:")
print(df_renamed)

以下是上述程式碼的輸出:

Original MultiIndexed DataFrame:
X Y
Aone12
two34
three11
Bone56
two78
three22
Renamed DataFrame:
X Y
aaa112
two34
three11
B156
two78
three22

示例:重新命名特定的列標籤

以下是另一個使用 df.rename() 方法重新命名多級索引 DataFrame 的特定列標籤的示例。

import pandas as pd

# Create a MultiIndex object
index = pd.MultiIndex.from_tuples([('A', 'one'), ('A', 'two'), ('A', 'three'),('B', 'one'), ('B', 'two'), ('B', 'three')])
# Create a DataFrame
data = [[1, 2], [3, 4], [1, 1], [5, 6], [7, 8], [2, 2]]
df = pd.DataFrame(data, index=index, columns=['X', 'Y'])

# Display the input DataFrame
print('Original MultiIndexed DataFrame:\n',df)

# Renaming columns
df_renamed = df.rename(columns={'X': "col0", 'Y': "col1"})
print("Renamed DataFrame:")
print(df_renamed)

以下是上述程式碼的輸出:

Original MultiIndexed DataFrame:
X Y
Aone12
two34
three11
Bone56
two78
three22
Renamed DataFrame:
col0 col1
Aone12
two34
three11
Bone56
two78
three22

重新命名多級索引軸名稱

pandas 的 DataFrame.rename_axis() 方法用於重新命名或設定多級索引中索引級別的名稱。在使用多級索引時,這尤其有用。

示例:指定/重新命名索引級別的名稱

此示例演示了使用 df.rename_axis() 方法重新命名多級索引 DataFrame 中索引級別名稱的方法。

import pandas as pd

# Create a MultiIndex object
index = pd.MultiIndex.from_tuples([('A', 'one'), ('A', 'two'), ('A', 'three'),('B', 'one'), ('B', 'two'), ('B', 'three')])
# Create a DataFrame
data = [[1, 2], [3, 4], [1, 1], [5, 6], [7, 8], [2, 2]]
df = pd.DataFrame(data, index=index, columns=['X', 'Y'])

# Display the input DataFrame
print('Original MultiIndexed DataFrame:\n',df)

# Set names for the index levels
result = df.rename_axis(index=["level1", "level2"])
print("Resultant DataFrame:")
print(result)

以下是上述程式碼的輸出:

Original MultiIndexed DataFrame:
X Y
Aone12
two34
three11
Bone56
two78
three22
Renamed DataFrame:
X Y
level1level2
Aone12
two34
three11
Bone56
two78
three22

使用 set_names() 重新命名多級索引級別

pandas 的 Index.set_names() 方法用於直接重新命名多級索引的級別。此方法允許您設定或更改索引中各個級別的名稱。

示例:重新命名多級索引級別的名稱

此示例演示瞭如何使用 Index.set_names() 方法更改多級索引級別的名稱。

import pandas as pd

# Create a MultiIndex object
index = pd.MultiIndex.from_tuples([('A', 'one'), ('A', 'two'), ('A', 'three'),('B', 'one'), ('B', 'two'), ('B', 'three')],
names=["level0", "level1"])

# Create a DataFrame
data = [[1, 2], [3, 4], [1, 1], [5, 6], [7, 8], [2, 2]]
df = pd.DataFrame(data, index=index, columns=['X', 'Y'])

# Display the input DataFrame
print('Original MultiIndexed DataFrame:\n',df)

# Renaming a specific level
df.index= df.index.set_names("new_name", level=0)
print("Resultant DataFrame:")
print(df)

以下是上述程式碼的輸出:

Original MultiIndexed DataFrame:
X Y
level1level2
Aone12
two34
three11
Bone56
two78
three22
Resultant DataFrame:
X Y
new_namelevel2
Aone12
two34
three11
Bone56
two78
three22
廣告