Python Pandas:将行转换为列标题

2024-05-20 16:46:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据框:

Year    Country          medal    no of medals
1896    Afghanistan      Gold        5
1896    Afghanistan      Silver      4
1896    Afghanistan      Bronze      3
1896    Algeria          Gold        1
1896    Algeria          Silver      2
1896    Algeria          Bronze      3

我要这样。

Year    Country      Gold   Silver   Bronze
1896    Afghanistan    5      4         3
1896    Algeria        1      2         3

堆叠/取消堆叠似乎不起作用。


Tags: of数据nosilveryearcountrygoldalgeria
2条回答

只有在行/列索引中有所需的列时,堆栈/取消堆栈才能工作。e、 简单地说,Stack/Unstack将把列索引的最低级别带到行索引的最低级别,反之亦然。

因此,在您的情况下,您可以通过stack/unstack by实现相同的结果

enter image description here

你在找^{}

In [11]: medals = df.pivot_table('no of medals', ['Year', 'Country'], 'medal')

In [12]: medals
Out[12]:
medal             Bronze  Gold  Silver
Year Country
1896 Afghanistan       3     5       4
     Algeria           3     1       2

如果要对列重新排序:

In [12]: medals.reindex_axis(['Gold', 'Silver', 'Bronze'], axis=1)
Out[12]:
medal             Gold  Silver  Bronze
Year Country
1896 Afghanistan     5       4       3
     Algeria         1       2       3

相关问题 更多 >