Преобразование категориальных значений в столбцы в Pandas - PullRequest
1 голос
/ 22 сентября 2019

Мне нужно преобразовать категориальные строки в отдельные столбцы, сохраняя первичные ключи в данных.

В данных все полезные атрибуты находятся в 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

1 Ответ

1 голос
/ 22 сентября 2019

Вы можете использовать:

vendors=df['attribute_name'].unique()
df2=pd.concat([df.set_index(['Platform_id','part_id','class_id']).groupby('attribute_name')['attribute_value'].get_group(key) for key in vendors],axis=1)
df2.columns=vendors
df2.reset_index(inplace=True)
print(df2)



   Platform_id part_id   class_id Vendor_name Cache Clock-speed Model_name
0          772  GHTYW2  PROCESSOR        None     4         NaN        NaN
1         4356  XCVT43  PROCESSOR       Intel     4         3.1        NaN
2        23675  TT3344  PROCESSOR       Intel   NaN         2.3      4500U
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...