我试图改变以下数据框(包含县和年份的值)
county region 2012 2013 ... 2035
A 101 10 15 ... 7
B 101 13 8 ... 11
...
进入如下所示的数据框:
county region year sum
A 101 2012 10
A 101 2013 15
... ... ... ...
A 101 2035 7
B 101 2012 13
B 101 2013 8
B 101 2035 11
我当前的数据框有400行(不同的县),其中包含2012 - 2035年的值。
我的手动方法是将年份列分开,并将每个列放在上一年的最后一行之下。但当然必须采用pythonic方式。
我想我在这里错过了一个基本的熊猫概念,可能我只是找不到这个问题的正确答案,因为我根本不知道如何提出正确的问题。请对新人保持温和。
答案 0 :(得分:3)
您可以使用pandas中的melt
:
In [26]: df
Out[26]:
county region 2012 2013
0 A 101 10 15
1 B 101 13 8
In [27]: pd.melt(df, id_vars=['county','region'], var_name='year', value_name='sum')
Out[27]:
county region year sum
0 A 101 2012 10
1 B 101 2012 13
2 A 101 2013 15
3 B 101 2013 8