Как соединить по колонкам?

Есть данные следующего формата:

col_1, col_2, data
1, 1, data_1
1, 2, data_2
1, 3, data_3
1, 4, data_4
2, 1, data_1
2, 2, data_2
2, 3, data_3
2, 4, data_4
2, 5, data_5

Каким образом преобразовать к следующему виду:

index_col_1, index_col_2_1, index_col_2_2, index_col_2_3, index_col_2_4, index_col_2_5
1, data_1, data_2, data_3, data_4, null
2, data_1, data_2, data_3, data_4, data_5

Ответы (1 шт):

Автор решения: MaxU

можно воспользоваться методом DataFrame.pivot_table():

res = (df
       .assign(x="index_col_2_" + df["col_2"].astype(str))
       .pivot_table(index="col_1", columns="x", values="data", aggfunc="first")
       .reset_index())

результат:

In [343]: res
Out[343]: 
x  col_1 index_col_2_1 index_col_2_2 index_col_2_3 index_col_2_4 index_col_2_5
0      1        data_1        data_2        data_3        data_4           NaN
1      2        data_1        data_2        data_3        data_4        data_5
→ Ссылка