Pandas数据帧:将列中的日期转换为行中的值

时间:2015-11-11 10:49:57

标签: python pandas dataframe rows

我试图改变以下数据框(包含县和年份的值)

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方式。

我想我在这里错过了一个基本的熊猫概念,可能我只是找不到这个问题的正确答案,因为我根本不知道如何提出正确的问题。请对新人保持温和。

1 个答案:

答案 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