【问题标题】:Transpose and widen Data转置和扩展数据
【发布时间】:2018-08-31 14:28:42
【问题描述】:

我的熊猫数据框如下:

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
...

谢谢。

【问题讨论】:

    标签: python pandas dataframe transpose


    【解决方案1】:

    我认为需要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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-10
      • 2017-09-22
      • 2017-01-14
      • 2017-11-15
      • 2012-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多