首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将MultiIndex列转换为标准列

将MultiIndex列转换为标准列
EN

Stack Overflow用户
提问于 2019-11-06 16:14:06
回答 1查看 203关注 0票数 3

如何转换包含MultiIndex列的Pandas DataFrame,例如

代码语言:javascript
复制
                FB                  AAPL
                open    volume      open    volume
date
2019-10-30      189.56  28734995    244.76  31130522
2019-10-31      196.70  42286529    247.24  34790520
2019-11-01      192.85  21711829    249.54  37781334

设置为具有常规列的索引级别,其中一个索引级别现在是所有行中的一列

代码语言:javascript
复制
                open    volume      ticker  
date
2019-10-30      189.56  28734995    FB      
2019-10-31      196.70  42286529    FB      
2019-11-01      192.85  21711829    FB      
2019-10-30      244.76  31130522    AAPL
2019-10-31      247.24  34790520    AAPL
2019-11-01      249.54  37781334    AAPL
EN

回答 1

Stack Overflow用户

发布于 2019-11-06 16:16:33

主要思想是使用带有DataFrame.reset_indexDataFrame.stack将MultiIndex二级转换为列:

代码语言:javascript
复制
df = df.stack(0).rename_axis(('date','ticker')).reset_index(level=1)
print (df)
           ticker    open    volume
date                               
2019-10-30   AAPL  244.76  31130522
2019-10-30     FB  189.56  28734995
2019-10-31   AAPL  247.24  34790520
2019-10-31     FB  196.70  42286529
2019-11-01   AAPL  249.54  37781334
2019-11-01     FB  192.85  21711829

如果排序很重要,则使用DataFrame.pop重新分配用于自动收报机、排序和列到最后一个位置的ordered catagorical

代码语言:javascript
复制
df1 = df.stack(0).rename_axis(('date','ticker')).reset_index(level=1)
df1['ticker'] = pd.Categorical(df1.pop('ticker'), 
                               ordered=True, 
                               categories=df.columns.get_level_values(0).unique())
df1 = df1.sort_values(['ticker','date'])
print (df1)
              open    volume ticker
date                               
2019-10-30  189.56  28734995     FB
2019-10-31  196.70  42286529     FB
2019-11-01  192.85  21711829     FB
2019-10-30  244.76  31130522   AAPL
2019-10-31  247.24  34790520   AAPL
2019-11-01  249.54  37781334   AAPL
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58725674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档