web-dev-qa-db-ja.com

python pandas

PythonでPandasを使用して「リバースメルト」を実行する方法がわかりません。これが私の開始データです

import pandas as pd

from StringIO import StringIO

Origin = pd.read_table(StringIO('''label    type    value
x   a   1
x   b   2
x   c   3
y   a   4
y   b   5
y   c   6
z   a   7
z   b   8
z   c   9'''))

Origin
Out[5]: 
  label type  value
0     x    a      1
1     x    b      2
2     x    c      3
3     y    a      4
4     y    b      5
5     y    c      6
6     z    a      7
7     z    b      8
8     z    c      9

これは私が欲しい出力です:

    label   a   b   c
        x   1   2   3
        y   4   5   6
        z   7   8   9

これを行う簡単な方法があると確信していますが、方法はわかりません。

42
Boris Gorelik

いくつかの方法があります。
using .pivot

>>> Origin.pivot(index='label', columns='type')['value']
type   a  b  c
label         
x      1  2  3
y      4  5  6
z      7  8  9

[3 rows x 3 columns]

pivot_table

>>> Origin.pivot_table(values='value', index='label', columns='type')
       value      
type       a  b  c
label             
x          1  2  3
y          4  5  6
z          7  8  9

[3 rows x 3 columns]

または .groupby の後に .unstack

>>> Origin.groupby(['label', 'type'])['value'].aggregate('mean').unstack()
type   a  b  c
label         
x      1  2  3
y      4  5  6
z      7  8  9

[3 rows x 3 columns]
57
behzad.nouri