首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用多索引将另一个子列添加到dataframe中

如何使用多索引将另一个子列添加到dataframe中
EN

Stack Overflow用户
提问于 2022-09-13 08:24:21
回答 1查看 39关注 0票数 1

我正在尝试添加第三列“生产力”,以便像Admin这样的每个角色都有三个子列-- produktiv、unproduktiv和Productivity。

生产率计算如下:

生产力= Produktiv / (Produktiv + Unproduktiv) * 100

(别介意,我不得不匿名)

这是df.columns的输出

任何帮助都将不胜感激。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-13 08:32:46

如果只有ProduktivUnproduktiv级别的sum可能被MultiIndex的第一级聚合,那么用Produktiv除以rename,再用concat附加到原始数据格式的rename第二级

代码语言:javascript
运行
复制
df1 = (df.xs('Produktiv', axis=1, level=1, drop_level=False)
         .div(df.groupby(level=0, axis=1).sum(), level=0).mul(100))

df = (pd.concat([df, df1.rename(columns={'Produktiv':'Productivity'}, level=1)], axis=1)
        .sort_index(axis=1)
        .reindex(['Produktiv','Unproduktiv','Productivity'], level=1, axis=1))
print (df)

另一个想法是先通过Produktiv, Unproduktiv获得两个切片,然后通过pd.concat添加级:

代码语言:javascript
运行
复制
df1 = df.xs('Produktiv', axis=1, level=1)
df2 = df.xs('Unproduktiv', axis=1, level=1)

df11 = (pd.concat({'Productivity':df1.div(df1.add(df2)).mul(100)}, axis=1)
          .swaplevel(0,1,axis=1))
    
df = (pd.concat([df, df11], axis=1)
        .sort_index(axis=1)
        .reindex(['Produktiv','Unproduktiv','Productivity'], level=1, axis=1))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73699769

复制
相关文章

相似问题

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