Предположим, у нас есть такой фрейм данных:
df = pd.DataFrame({'key' : ['one', 'two', 'three', 'four'] * 3,
'col' : ['A', 'B', 'C'] * 4,
'val1' : np.random.randn(12),
'val2' : np.random.randn(12),
'val3' : np.random.randn(12)})
key + col
- уникальный ключ

Я хочу сделатьcol
значения, чтобы стать столбцами или разделить их по таблицам и, наконец, выглядеть примерно так:

Первый наивный подход pd.crosstab(df.key,df.col)
не работал здесь хорошо:

Этот код pd.crosstab(df.key,df.col,values = df[['val1', 'val2', 'val3']], aggfunc = np.max)
не удалось запустить с ValueError: Wrong number of items passed 3, placement implies 1
Как это работает