Так что я думаю, что могу помочь вам с другим более простым и рабочим примером, который соответствует вашим потребностям
import pandas
df = pandas.DataFrame({
'id': [1, 2, 3],
'cat': ['cat_1', 'cat_2', 'cat_3'],
'price': [1, 2, 3]
})
df.set_index(df['id'], drop=True, inplace=True)
new_df = pandas.DataFrame(index=df.index)
for var in df['cat'].unique():
new_df[f'{var}_price'] = df[df['cat'] == var]['price']
new_df
Вывод:
cat_1_price cat_2_price cat_3_price
id
1 1.0 NaN NaN
2 NaN 2.0 NaN
3 NaN NaN 3.0