为了提供更多的清晰性,让我们来看看一个DataFrame,它的索引中有两个级别(MultiIndex)。
index = pd.MultiIndex.from_product([['TX', 'FL', 'CA'], ['North', 'South']], names=['State', 'Direction'])df = pd.DataFrame(index=index, data=np.random.randint(0, 10, (6,4)), columns=list('abcd'))
reset_index
方法(用默认参数调用)将所有索引级别转换为列,并使用简单的RangeIndex
作为新的索引。
df.reset_index()
使用level
参数以控制哪些索引级别被转换为列。如果可能的话,使用级别名称,这是更显式的。如果没有级别名称,则可以通过其整数位置引用每个级别,从外部开始为0。您可以在这里使用标量值或要重置的所有索引的列表。
df.reset_index(level='State') # same as df.reset_index(level=0)
在希望保留索引并将索引转换为列的罕见事件中,可以执行以下操作:
# for a single leveldf.assign(State=df.index.get_level_values('State'))# for all levelsdf.assign(**df.index.to_frame())
联系客服