分享

如何将数据中的pandas index转换为列?

 imelee 2018-04-20

为了提供更多的清晰性,让我们来看看一个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 level
df.assign(State=df.index.get_level_values('State'))

# for all levels
df.assign(**df.index.to_frame())

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多