尽管提供了大量帮助here和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'))
有关此事的任何帮助吗?
答案 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