gpt4 book ai didi

python - 为数据集创建列层次结构(与索引层次结构相对)

转载 作者:行者123 更新时间:2023-12-01 12:04:13 25 4
gpt4 key购买 nike

所以到目前为止,这似乎比它应该的更难发现。

我发现的关于层次结构的一切都与索引层次结构有关,而与列层次结构的关系则少得多。

我正在处理一个场景,其中每一行的数据必须只属于一个人。因此,我感兴趣的是执行以下操作。

我将使用一张表格对此进行说明,其中 3 个人每人都参加了相同的 3 项测试(英语、化学、数学)。我正在尝试像这样转换表格:

df = pd.DataFrame({'Name': {0: 'Mary', 1: 'Mary', 2: 'Mary', 3:'John',4:'John',5:'John',6:'Fred',7:'Fred',8:'Fred'}, 
'Test': {0: 'English', 1: 'Chem', 2: 'Math', 3:'English',4:'Chem',5:'Math',6:'English',7:'Chem',8:'Math'},
'Score': {0: '100', 1: '70', 2: '80', 3:'90',4:'100',5:'100',6:'80',7:'80',8:'90'},
'Grade': {0: 'A', 1: 'C', 2: 'B', 3:'A',4:'A',5:'A',6:'B',7:'B',8:'A'}})

df

输出:

https://i.gyazo.com/16cc8ae43103fcaf7d96a82bec7dbb31.png

进入这个:

https://i.gyazo.com/56c93974712d34409ebffc8639d1c0f2.png

它与普通数据透视表的主要区别在于它输出一个多列表 - 这就是为什么我什至不知道从哪里开始。

最佳答案

您可以使用:

df.set_index(['Name','Test']).unstack().swaplevel(axis=1).sort_index(axis=1)

 Test  Chem       English        Math      
Grade Score Grade Score Grade Score
Name
Fred B 80 B 80 A 90
John A 100 A 90 A 100
Mary C 70 A 100 B 80

根据评论,如果您想对其他列使用相同的顺序,您可以使用:

m=df.set_index(['Name','Test'])
(m.unstack().swaplevel(axis=1)
.sort_index(axis=1).reindex(columns=m.columns,level=1))

 Test  Chem       English        Math      
Score Grade Score Grade Score Grade
Name
Fred 80 B 80 B 90 A
John 100 A 90 A 100 A
Mary 70 C 100 A 80 B

关于python - 为数据集创建列层次结构(与索引层次结构相对),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59413274/

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