将日期框架重新格式化为新的输出格式

时间:2017-11-30 21:10:58

标签: python pandas

我在数据帧(df)中有一个数据透视表的输出,如下所示:

  Year Month             sum
  2005    10    -1.596817e+05
          11    -2.521054e+05
          12     5.981900e+05
  2006     1     8.686413e+05
           2     1.673673e+06
           3     1.218341e+06
           4     4.131970e+05
           5     1.090499e+05
           6     1.495985e+06
           7     1.736795e+06
           8     1.155071e+05
                     ...
           9     7.847369e+05
           10   -5.564139e+04
           11   -7.435682e+05
           12    1.073361e+05
  2017      1    3.427652e+05
            2    3.574432e+05
            3    5.026018e+04

有没有办法重新格式化数据框,因此输出到控制台看起来像:

Month     1  2  3  4  5  6  7  8  9  10  11  12
Year
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017

所有值也将填入新表中。

2 个答案:

答案 0 :(得分:2)

使用unstack

In [18]: df['sum'].unstack('Month')
Out[18]:
Month         1          2           3         4         5          6          7         8         9          10        11        12
Year
2005.0       NaN        NaN         NaN       NaN       NaN        NaN        NaN       NaN       NaN -159681.70 -252105.4  598190.0
2006.0  868641.3  1673673.0  1218341.00  413197.0  109049.9  1495985.0  1736795.0  115507.1  784736.9  -55641.39 -743568.2  107336.1
2017.0  342765.2   357443.2    50260.18       NaN       NaN        NaN        NaN       NaN       NaN        NaN       NaN       NaN

答案 1 :(得分:0)

试试df.pivot(index='year', columns='month', values='sum')

要填写空(如果为空)年份列,请在上面使用df.fillna(method='ffill')

阅读上面的答案应该提到我的建议适用于年份和月份不是指数的情况。