gpt4 book ai didi

python - 具有分层列的 Pandas 数据透视表

转载 作者:行者123 更新时间:2023-12-01 01:09:40 24 4
gpt4 key购买 nike

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

data structure

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
<小时/>

我尝试使用以下 pandas 函数:

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)

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

pivot

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

desired ourcome

有没有办法使用 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

关于python - 具有分层列的 Pandas 数据透视表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54981749/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com