pandas 分组依据:本例中的用法

pandas group by: usage in this instance

尽管提供了广泛的帮助 here and here 我还是无法弄清楚如何执行以下操作:

给定此数据集 (df):

import pandas as pd
improt numpy as np

df = pd.DataFrame([['CORE1', 'CORE2', 'CORE3', 'CORE1', 'CORE2', 'CORE3', 'CORE1', 'CORE2', 'CORE3', ],
                   ['alfa', 'beta', 'gamma', 'alfa', 'beta', 'gamma', 'alfa', 'beta', 'gamma', ],
                   np.random.rand(9).tolist()],
                  index=['ptf', 'name', 'value']).transpose()

name value ptf
alfa  0.1  CORE1
beta  0.7  CORE1
gamma 0.2  CORE1
alfa  0.3  CORE2
beta  0.4  CORE2
gamma 0.3  CORE2
alfa  0.9  CORE3
beta  0.05 CORE3
gamma 0.05 CORE3

变成

      CORE1 CORE2 CORE3
alfa  0.1   0.3   0.9
beta  0.7   0.4   0.05
gamma 0.2   0.3   0.05

我在猜测 df.groupby(by='ptf') 行中的某处以及之后的内容。到底还有什么需要理解的。

编辑:

print(df.dtypes)

# 1st - works but takes numerate index - not what I want
print(df.pivot(columns='ptf', values='value'))
# 2nd - textbook made - does not work
print(df.pivot(index='name', columns='ptf', values='value'))
# 3rd - same as 2nd but with different constructor
print(pd.pivot_table(df, index='name', values='value', columns='ptf'))

有什么帮助吗?

使用pivot:

print (df.pivot(index='name', columns='ptf', values='value'))
ptf    CORE1  CORE2  CORE3
name                      
alfa     0.1    0.3   0.90
beta     0.7    0.4   0.05
gamma    0.2    0.3   0.05