在Python中转移数据



我有来自世界银行的数据,看起来像这样:

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

等等,依此类推

您可以使用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

最新更新