Мне нужно преобразовать категориальные строки в отдельные столбцы, сохраняя первичные ключи в данных.
В данных все полезные атрибуты находятся в 2 столбцах (attribute_name и attribute_value).Я хочу преобразовать строки в attribute_name в отдельные столбцы и заполнить их соответствующими данными из столбца attribute_value (как показано на рисунке ниже).
Примечание. Не все part_ids имеют одинаковые имена атрибутов или имеют ихнаселен.После преобразования некоторые part_ids будут иметь пропущенные значения в новых столбцах.
Я попробовал функции pandas unstack () и pivot (), но они также преобразовывают значения platform_id и part_id в столбцы.
Приведенный ниже код подошел ближе всего к моему требованию, но он создал дублированные столбцы для каждого part_id, и я не смог выполнить это преобразование, сохранив свои первичные ключи, такие как platform_id и part_id:
df[['attribute_name', attribute_value']].set_index('attribute_name').T.rename_axis(None axis=1).reset_index(drop=True)
Добавление кода для повторного созданияфрейм данных:
data = {'Platform_id':[4356, 4356, 4356, 23675, 23675, 23675, 772, 772],\
'part_id':['XCVT43', 'XCVT43', 'XCVT43', 'TT3344', 'TT3344', 'TT3344', 'GHTYW2', 'GHTYW2'], \
'class_id':['PROCESSOR', 'PROCESSOR','PROCESSOR','PROCESSOR','PROCESSOR','PROCESSOR','PROCESSOR','PROCESSOR',], \
'attribute_name': ['Vendor_name', 'Cache', 'Clock-speed', 'Vendor_name', 'Model_name', 'Clock-speed', 'Vendor_name', 'Cache'], \
'attribute_value': ['Intel', '4', '3.1', 'Intel', '4500U', '2.3', None, '4']}
df = pd.DataFrame(data)
![data transformation before and after](https://i.stack.imgur.com/gnsdR.png)