首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在多层列(Pandas)中将索引级别转换为新级别

如何在多层列(Pandas)中将索引级别转换为新级别
EN

Stack Overflow用户
提问于 2021-12-08 12:29:01
回答 2查看 116关注 0票数 2

我有以下数据,dfg (这是以前聚合的结果)。

代码语言:javascript
运行
复制
                   F-1   F-2
dataset Model               
G       Baseline 0.971 0.967
        Version2 0.971 0.967
H       Baseline 0.780 0.762
        Version2 0.800 0.777
S       Baseline 0.401 0.320
        Version2 0.453 0.365
T       Baseline 0.881 0.825
        Version2 0.989 0.985

我想要的是获得我的数据文件的以下组织:

代码语言:javascript
运行
复制
        Baseline    Version2
dataset F-1   F-2   F-1   F-2
G       0.971 0.967 0.971 0.967
H       0.780 0.762 0.800 0.777
S       0.401 0.320 0.453 0.365
T       0.881 0.825 0.989 0.985

我尝试了几件事,但我认为最好的解决方案总是给我带来错误。我最“合乎逻辑”的解决方案是:

重新设置索引(将“模型”提取到columns);

  • create中-从tuples;

  • changing中提取多个级别的列-这些列为多个级别的列。

就像这样:

代码语言:javascript
运行
复制
dfg.reset_index(inplace=True, level=['Model']
new_cols = [('Baseline', 'F-1'), ('Baseline', 'F-2'), ('Version2', 'F-1'), ('Version2', 'F-2')]
multi_cols = pd.MultiIndex.from_tuples(new_cols, names=('Model', 'Measure'))

但我得到了以下错误:

代码语言:javascript
运行
复制
ValueError: Length mismatch: Expected axis has 3 elements, new values have 4 elements

我知道这是相当原始的,但我找不到任何源可以解释如何从现有的数据文件构建多层次的列。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-08 12:31:24

DataFrame.stackSeries.unstack一起使用,最后一次使用DataFrame.rename_axis清洁列名

代码语言:javascript
运行
复制
#last previous, last levels
df = df.stack().unstack([-2,-1]).rename_axis((None, None), axis=1)
#or second and third levels
#df = df.stack().unstack([1,2]).rename_axis((None, None), axis=1)
print (df)
        Baseline        Version2       
             F-1    F-2      F-1    F-2
dataset                                
G          0.971  0.967    0.971  0.967
H          0.780  0.762    0.800  0.777
S          0.401  0.320    0.453  0.365
T          0.881  0.825    0.989  0.985
票数 3
EN

Stack Overflow用户

发布于 2021-12-08 12:35:08

代码语言:javascript
运行
复制
df.stack().unstack(0).transpose()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70275035

复制
相关文章

相似问题

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