首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas多索引多列级别1

问Pandas多索引多列级别1
EN

Stack Overflow用户
提问于 2021-04-06 20:52:22
回答 1查看 18关注 0票数 0

我有以下示例数据集:

​

通过这段代码,我成功地将其加载到pandas数据帧中,并执行基本操作,如拥有每个配置文件的总天数和总成本。

代码语言:javascript
复制
import pandas as pd
df = pd.read_excel('multiindex.xlsx', "0001",header=[0,1,2,3],index_col=[0,1,2])

print(df)

print(df.axes[1])

print(df.axes[0])
df['Total days'] = df.groupby(axis = 1,level = 'Full project').sum()
df['Total cost']=(df.index.get_level_values('Daily rate')*df['Total days']).values
print (df)

现在我想为每个阶段添加一个"Total cost“,我可以用以下代码创建聚合的df

代码语言:javascript
复制
df2 = df.groupby(axis = 1,level = 'Phase').sum()
print( df2 )



Phase                           Build  Discovery
   Profile Name Daily rate                         
   Dev     dev1 10          110.0    4.0        6.0
           dev2 10           88.0    4.0        4.0
           dev3 10           88.0    4.0        4.0
   QA      qa1  10          110.0    4.0        6.0
           qa2  10           88.0    4.0        4.0

但是,如何在不指定每个阶段名称的情况下,将"Daily rates“乘以阶段中的每个子列,并添加一个名为”阶段名称total cost“的列,得到如下结果:

​

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-06 21:03:33

对多个所有列使用DataFrame.mul,然后使用DataFrame.add_prefix并附加到原始DataFrame df2

代码语言:javascript
复制
df2 = df.sum(axis = 1,level = 'Phase')

df22 = df2.mul(df2.index.get_level_values('Daily rate'), axis=0).add_prefix(' total cost')
df2 = df2.join(df22)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66969026

复制
相关文章

相似问题

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