首页 > 解决方案 > Python-Pandas 将列转换为行

问题描述

我的 excel 数据库有一些按国家/地区多年的信息。问题是每年都有不同的列标题。例如:

Country      Indicator   1950    1951    1952
Australia       x         10      27     20
Australia       y          7      11      8
Australia       z         40      32     37

我想将每个指标转换为列标题并按年制作一列。像这样:

Country         year          x       y     z
Australia       1950         10       7     40
Australia       1951         27      11     32
Australia       1952         20       8     37

而且我不知道列中有多少个国家。年 = 1950 至 2019

标签: pythonpandas

解决方案


我们可以使用stack和进行格式化unstack

df.set_index(['Country','Indicator']).stack().unstack(level=1).reset_index()
Indicator    Country level_1   x   y   z
0          Australia    1950  10   7  40
1          Australia    1951  27  11  32
2          Australia    1952  20   8  37

推荐阅读