繁体   English   中英

具有层次结构列的Pandas数据透视表

[英]Pandas pivot table with hierarchical columns

我需要创建一个数据透视表。 我的数据框具有以下结构:

数据结构

print (df)
  company team person project unit start   end  num
0     ABC  Dev   John     pr1   BE  date  date    3
1     ABC  Dev    Tim     pr1   FE  date  date    4
2     ABC  Dev  James     pr2   FE  date  date    3

我尝试使用以下熊猫函数:

table = pd.pivot_table(df,
                index=["company","team","person"],
                columns=["project", 'unit'],
                values=["start","end","num"],
                aggfunc={"start": np.min,
                       "end": np.max ,
                       "num": np.sum},
                fill_value=0)
table.columns = table.columns.swaplevel(2, 0).swaplevel(1, 0)

数据已转换为以下数据透视表:

枢

我最终获得了所需的数据结果,但是格式化是一个问题。 我希望数据框采用以下格式:

希望我们的到来

有没有一种方法可以使用Pandas数据透视表功能将列转换为分层列?

使用DataFrame.reorder_levelsDataFrame.sort_index和更改订单DataFrame.reindex与列表:

table = pd.pivot_table(df,
                index=["company","team","person"],
                columns=["project", 'unit'],
                values=["start","end","num"],
                aggfunc={"start": np.min,
                       "end": np.max ,
                       "num": np.sum},
                fill_value=0)

vals = ['start','end','num']
table = table.reorder_levels([1,2,0], axis=1).sort_index(axis=1).reindex(vals, level=2, axis=1)
print (table)
project               pr1                             pr2          
unit                   BE              FE              FE          
                    start   end num start   end num start   end num
company team person                                                
ABC     Dev  James      0     0   0     0     0   0  date  date   3
             John    date  date   3     0     0   0     0     0   0
             Tim        0     0   0  date  date   4     0     0   0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM