pandas group by:在这个例子中的用法

时间:2016-07-01 09:32:32

标签: python pandas dataframe pivot

尽管提供了大量帮助herehere,但我无法弄清楚如何执行以下操作:

给出这个数据集(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'))

有关此事的任何帮助吗?

1 个答案:

答案 0 :(得分:3)

使用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