【问题标题】:Transposing Data in Python在 Python 中转置数据
【发布时间】:2017-03-03 23:31:32
【问题描述】:

我有来自世界银行的数据,如下所示:

Country Name    Country Code    1995    1996    1997    1998    1999    2000    2001    2002    2003    2004    2005    2006    2007    2008    2009    2010    2011    2012    2013    2014    2015
Aruba           ABW            80326    83195   85447   87276   89004   90858   92894   94995   97015   98742   100031  100830  101218  101342  101416  101597  101936  102393  102921  103441  103889

这是来自 250 个国家/地区的人口数据,我只是为了举例而展示了第一个。我怎样才能将其转置,以便每个国家和年份都像这样在同一行上?

Country Name    Country Code    Year    Population
Aruba           ABW             1995    80326
Aruba           ABW             1996    83195
Aruba           ABW             1997    85447
Aruba           ABW             1998    87276

以此类推

【问题讨论】:

    标签: python pandas dataframe transpose


    【解决方案1】:

    您可以使用pd.melt

    pd.melt(df, id_vars=['Country Name', 'Country Code'], 
            var_name='Year', value_name='Population')
    

    或者,可以将Country NameCountry Code 添加到索引、堆栈,然后重置索引

    df = df.set_index(['Country Name', 'Country Code']).stack().reset_index()
    

    但是您必须在处理后设置列名。 pd.melt 对此可能更好,而且很可能也更快。

    演示

    >>> pd.melt(df, id_vars=['Country Name', 'Country Code'],
                var_name='Year', value_name='Population')
    
       Country Name Country Code  Year  Population
    0         Aruba          ABW  1995       80326
    1         Aruba          ABW  1996       83195
    2         Aruba          ABW  1997       85447
    3         Aruba          ABW  1998       87276
    4         Aruba          ABW  1999       89004
    5         Aruba          ABW  2000       90858
    6         Aruba          ABW  2001       92894
    7         Aruba          ABW  2002       94995
    8         Aruba          ABW  2003       97015
    9         Aruba          ABW  2004       98742
    10        Aruba          ABW  2005      100031
    11        Aruba          ABW  2006      100830
    12        Aruba          ABW  2007      101218
    13        Aruba          ABW  2008      101342
    14        Aruba          ABW  2009      101416
    15        Aruba          ABW  2010      101597
    16        Aruba          ABW  2011      101936
    17        Aruba          ABW  2012      102393
    18        Aruba          ABW  2013      102921
    19        Aruba          ABW  2014      103441
    20        Aruba          ABW  2015      103889
    

    【讨论】:

    • 完美,@Mitch!谢谢!!
    猜你喜欢
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 2019-12-03
    • 2019-02-11
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多