python - 转置和扩展数据

标签 python pandas dataframe transpose

我的 Pandas 数据框如下所示:

Country Code  1960  1961  1962  1963  1964  1965  1966  1967  1968  ... 2015
ABW  2.615300  2.734390  2.678430  2.929920  2.963250  3.060540 ...  4.349760
AFG  0.249760  0.218480  0.210840  0.217240  0.211410  0.209910 ...  0.671330  
ALB  NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN  ... 1.12214
...

如何将其转置为如下所示?

Country_Code  Year  Econometric_Metric
ABW  1960  2.615300
ABW  1961  2.734390
ABW  1962  2.678430
...
ABW  2015  4.349760
AFG  1960  0.249760
AFG  1961  0.218480
AFG  1962  0.210840
...
AFG  2015  0.671330
ALB  1960  NaN
ALB  1961  NaN
ALB  1962  NaN 
ALB  2015  1.12214
...

谢谢。

最佳答案

我认为需要meltsort_values :

df = (df.melt(['Country Code'], var_name='Year', value_name='Econometric_Metric')
        .sort_values(['Country Code','Year'])
        .reset_index(drop=True))

或者set_indexstack :

df = (df.set_index(['Country Code'])
        .stack(dropna=False)
        .reset_index(name='Econometric_Metric')
        .rename(columns={'level_1':'Year'}))

print (df.head(10))
  Country Code  Year  Econometric_Metric
0          ABW  1960             2.61530
1          ABW  1961             2.73439
2          ABW  1962             2.67843
3          ABW  1963             2.92992
4          ABW  1964             2.96325
5          ABW  1965             3.06054
6          ABW  1966                 NaN
7          ABW  1967                 NaN
8          ABW  1968                 NaN
9          ABW  2015             4.34976

关于python - 转置和扩展数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49423787/

相关文章:

javascript - 页面刷新后,Ajax POST 到 Flask 不起作用

python - 如何将对象列表传递给线程函数

python - Pandas 中的相对行选择?

r - 无法将数据框转换为h2o对象

python - 如何使用 Tensorflow 2.0 数据集在训练时执行 10 次裁剪图像增强

python - 有没有办法在多个列中填充缺失值,这些列中的部分名称与另一列中的值共享?

python - 跨多个列计算字符串值以创建新的总计列的有效方法

python - 有没有一种方法可以以有吸引力的方式自动呈现 pandas Dataframes

python - 如何在 Python 中融化或取消堆叠数据帧?

python - SQLalchemy 中的关系