39

私は現在、次のようにDataFrameレイアウトしています:

        Jan Feb Mar Apr ...
2001    1   12  12  19  
2002    9   ...
2003    ...

そして、データを次のように「ピボット解除」したいと思います。

Date    Value
Jan 2001    1
Feb 2001    1
Mar 2001    12
...
Jan 2002    9

pandas/NumPy を使用してこれを達成する最良の方法は何ですか?

4

3 に答える 3

55

df.unstack()必要な作業は、月を第 1 レベル、年を第 2 レベルのインデックスとする MultiIndexed Series を作成することだけです。それらを列にしたい場合は、その後呼び出すだけreset_index()です。

>>> df
      Jan  Feb
2001    3    4
2002    2    7
>>> df.unstack()
Jan  2001    3
     2002    2
Feb  2001    4
     2002    7
>>> df = df.unstack().reset_index(name='value')
>>> df
  level_0  level_1  value
0     Jan     2001      3
1     Jan     2002      2
2     Feb     2001      4
3     Feb     2002      7
>>> df.rename(columns={'level_0': 'month', 'level_1': 'year'}, inplace=True)
>>> df
  month  year  value
0   Jan  2001      3
1   Jan  2002      2
2   Feb  2001      4
3   Feb  2002      7
于 2013-08-15T18:28:38.057 に答える