gpt4 book ai didi

python - 在 Python 中转置数据

转载 作者:行者123 更新时间:2023-11-28 22:30:06 24 4
gpt4 key购买 nike

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

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

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com