我想从这个
转换一个 Dataframe
改为:
我花了一段时间才弄明白melt和transpose函数,从而得到这个结果
但我并没有设法将1990年到2019年的数据以重复的方式应用到189个国家中的每一个国家。
我试过:
year_list = []
for year in range(1990, 2020,1):
year_list.append(year)
years = pd.Series(year_list)
years
然后
df['year'] = years.repeat(30)
(我需要重复30次,因为框架由5670行= 189个国家 * 29年组成)
我收到此错误消息:
ValueError: cannot reindex on an axis with duplicate labels
谷歌这个错误没有帮助。
1条答案
按热度按时间brgchamk1#
一种办法可以是:
样本数据
代码
说明
country
使用df.set_index
,并应用df.unstack
将列名中的年份添加到索引中。level=1
上使用df.sort_index
来获取按字母顺序排列的国家。df.reset_index
(drop
参数设置为False
)将索引作为列取回,并链接df.rename
以定制列名。