gpt4 book ai didi

python - 来自 WB WDI 数据的 Pandas DataFrame : combine year columns into "year" variable and merge rows

转载 作者:太空宇宙 更新时间:2023-11-03 13:47:36 25 4
gpt4 key购买 nike

我有一个包含以下列的数据集(.tsv 文件)。 (这是世界银行新的 WDI all-in all-time single-download dataset。不错!)

country countrycode varname 1960 1961 1962
afghanistan AFG GDP 5.6 5.7 5.8
afghanistan AFG Gini .77 .78 .75
afghanistan AFG educ 8.1 8.2 8.3
afghanistan AFG pop 888 889 890
albania ALB GDP 6.6 6.7 6.8
albania ALB Gini .45 .46 .47
albania ALB educ 6.2 6.3 6.4
albania ALB pop 777 778 779

我需要一个以 ['GDP','Gini','edu','pop'] 作为列以及 ['country', 'countrycode', 'year'] 的 pandas DataFrame。所以“年”的值目前是列!我希望每个国家和年份的组合只有一行。

例如,列和第一行将是

country countrycode year GDP Gini educ pop
afghanistan AFG 1960 5.6 .77 8.1 888

这似乎是某种复杂的支点或“融化”的对立面,但我想不通。

最佳答案

In [59]: df
Out[59]:
country countrycode varname 1960 1961 1962
0 afghanistan AFG GDP 5.60 5.70 5.80
1 afghanistan AFG Gini 0.77 0.78 0.75
2 afghanistan AFG educ 8.10 8.20 8.30
3 afghanistan AFG pop 888.00 889.00 890.00
4 albania ALB GDP 6.60 6.70 6.80
5 albania ALB Gini 0.45 0.46 0.47
6 albania ALB educ 6.20 6.30 6.40
7 albania ALB pop 777.00 778.00 779.00

In [60]: df = df.set_index(['country', 'countrycode', 'varname'])

In [61]: df.columns.name = 'year'

In [62]: df.stack().unstack('varname')
Out[62]:
varname GDP Gini educ pop
country countrycode year
afghanistan AFG 1960 5.6 0.77 8.1 888
1961 5.7 0.78 8.2 889
1962 5.8 0.75 8.3 890
albania ALB 1960 6.6 0.45 6.2 777
1961 6.7 0.46 6.3 778
1962 6.8 0.47 6.4 779

后者是一个带有 MutliIndex 的框架,您可以执行 reset_index 将 MultiIndex 移动到常规列。

关于python - 来自 WB WDI 数据的 Pandas DataFrame : combine year columns into "year" variable and merge rows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16349652/

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