将 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)。