首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Python转换数据

问用Python转换数据
EN

Stack Overflow用户
提问于 2017-03-03 15:07:09
回答 1查看 306关注 0票数 2

我从世界银行得到的数据如下:

代码语言:javascript
复制
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个国家的人口数据,我只是给出了第一个例子。我怎样才能把这个转换成每一个国家和一年都在这样的一条线上?

代码语言:javascript
复制
Country Name    Country Code    Year    Population
Aruba           ABW             1995    80326
Aruba           ABW             1996    83195
Aruba           ABW             1997    85447
Aruba           ABW             1998    87276

以此类推

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-03 15:13:41

你可以用pd.melt。

代码语言:javascript
复制
pd.melt(df, id_vars=['Country Name', 'Country Code'], 
        var_name='Year', value_name='Population')

或者,也可以将Country Name和Country Code添加到索引中,堆栈,然后重置索引。

代码语言:javascript
复制
df = df.set_index(['Country Name', 'Country Code']).stack().reset_index()

但是,您必须在处理后设置列名。pd.melt在这方面可能更好,而且速度也很可能更快。

Demo

代码语言:javascript
复制
>>> 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
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42582291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档