从 Pandas 的多重索引 DataFrame 转换为单层索引 DataFrame

79
                       NI
YEAR MONTH datetime        
2000 1     2000-01-01   NaN
           2000-01-02   NaN
           2000-01-03   NaN
           2000-01-04   NaN
           2000-01-05   NaN

在上面的数据框中,我有一个由列组成的多级索引:

names=[u'YEAR', u'MONTH', u'datetime']

我如何将索引为“日期时间”的数据框还原为具有“年”和“月”作为普通列的数据框?

2个回答

94

level=[0,1]传递给仅重置这些级别:

dist_df = dist_df.reset_index(level=[0,1])

In [28]:
df.reset_index(level=[0,1])

Out[28]:
            YEAR  MONTH  NI
datetime                     
2000-01-01  2000      1   NaN
2000-01-02  2000      1   NaN
2000-01-03  2000      1   NaN
2000-01-04  2000      1   NaN
2000-01-05  2000      1   NaN

你可以交替使用标签名称:

df.reset_index(level=['YEAR','MONTH'])

29
如果dist_df.columns是多级索引而不是行,会怎么样? - Dzmitry Lazerka
@DzmitryLazerka 抱歉,我不理解你的评论。如果你有问题,请发布一个新的问题。在评论中回答问题并不是 SO 的良好形式。 - EdChum
12
要将多级(层次结构)的列 / 行索引展平,可以使用 .to_flat_index() 方法。请参阅这个答案的代码示例 - onlyphantom
这会改变数组的顺序吗? - meesinlid

8

另一种简单的方法是为数据框设置列

consolidated_data.columns=country_master

参考:https://riptutorial.com/pandas/example/18695/how-to-change-multiindex-columns-to-standard-columns

本文介绍如何将多级索引列转换为标准列。在pandas中,多级索引列是一种常见的数据结构,在处理数据时可能会用到。但是,在某些情况下,我们需要将其转换为标准列以方便后续操作。可以使用pandas的reset_index()方法来实现该功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接