Если ваш оригинал df
это
id id_m X
0 10 10 a
1 10 11 b
2 10 12 c
3 11 10 d
4 11 11 e
5 11 12 f
6 12 10 g
7 12 11 h
8 12 12 i
И все, что вам нужно, это
id_m 10 11 12
id
10 a b c
11 d e f
12 g h i
Вы можете groupby
столбцы id
и id_m
,возьмите max
столбца X
, затем unstack
столбец id_m
, как этот.
df.groupby([
'id',
'id_m'
]).X.max().unstack()
Если вы действительно хотите использовать pivot_table
, вы можете сделать это тоже
df.pivot_table(index='id', columns='id_m', values='X', aggfunc='max')
Те же результаты.
Наконец, вы можете использовать только pivot
, поскольку ваши строки уникальны по отношению к индексам и столбцам.
df.pivot(index='id', columns='id_m')
Ссылки