将Pandas多指数变成列
Pandas DataFrame是一个二维的大小可调的,可能是异质的表格数据结构,有标记的axis(行和列)。一个多索引的数据框架有多级,或者说分层索引。我们可以通过reset_index()方法轻松地将多级索引转换为列。
DataFrame.reset_index(),用于将索引重置为默认值,并使索引成为数据框架的一个列。
第1步:创建一个多指标数据框架。
让我们先看一个例子,制作一个多指标数据框架。
代码:
import pandas as pd
# Creating index for multi-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)
输出:
第2步:将索引转换为列。
在这里我们可以看到分层索引,我们要用reset_index()方法将其转换成一个列。
reset_df = df.reset_index()
print(reset_df)
输出:
这里我们可以看到,现在的索引是默认的,我们的多索引现在变成了默认的列。我们还可以使用参数level来选择重置哪一级的多指标。
代码:
# rest only index 'indx1'
reset_indx1 = df.reset_index(level='indx1')
print(reset_indx1)
输出:
在这里,我们可以看到只有indx1被重置成为一列,而不是两个索引。另外,注意到在这种情况下没有默认索引,因为还剩下一个索引(indx2)。