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
尽管提供了广泛的帮助 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