📜  将 Pandas Multi-Index 转成列

📅  最后修改于: 2022-05-13 01:55:00.718000             🧑  作者: Mango

将 Pandas Multi-Index 转成列

Pandas DataFrame 是一个二维大小可变、潜在异构的表格数据结构,带有标记的轴(行和列)。多索引数据帧具有多级或分层索引。我们可以通过reset_index()轻松将多级索引转换为列 方法。

DataFrame.reset_index() 用于将索引重置为默认值并使索引成为数据帧的列。

第 1 步:创建多索引数据框。

让我们先看一个创建多索引数据帧的例子。

代码:



Python3
import pandas as pd
  
# Creating index for muti-index dataframe
tuples = [('A', 'a'), ('A', 'b'), ('B', 'a'), ('B', 'b')]
index = pd.MultiIndex.from_tuples(tuples)
  
# Value corresponding to the index
data = [2, 4, 6, 8]
  
# Creating dataframe using 'data' and 'index'
df = pd.DataFrame(data = data, index = index, columns = ['value'])
print(df)


Python3
reset_df = df.reset_index()
print(reset_df)


Python3
# rest only index 'indx1'
reset_indx1 = df.reset_index(level='indx1')
print(reset_indx1)


输出:

步骤2:将索引转换为列。

在这里我们可以看到分层索引,我们将使用 reset_index() 方法将其转换为列。

蟒蛇3

reset_df = df.reset_index()
print(reset_df)

输出:



在这里我们可以看到索引现在是默认的,我们的多索引现在变成了默认的列。我们还可以使用参数 level 选择要重置的多索引级别。

代码:

蟒蛇3

# rest only index 'indx1'
reset_indx1 = df.reset_index(level='indx1')
print(reset_indx1)

输出:

在这里,我们可以看到只有 indx1 被重置成为一列,而不是两个索引。另外,请注意在这种情况下没有默认索引,因为仍然有一个索引 (indx2)。