У меня есть два кадра данных:
df_components
: список уникальных компонентов (ID, ОПИСАНИЕ)
dataset
: несколько строк и столбцов из CSV (один из этих столбцов содержит описание компонента).
Мне нужно создать новый столбец в dataset
с идентификатором компонента в соответствии с df_components
.
Я пытался сделать так:
Создание столбцов df_components
и ID
на основе индекса
components = dataset["COMPDESC"].unique()
df_components = pd.DataFrame(components, columns=['DESCRIPTION'])
df_components.sort_values(by='DESCRIPTION', ascending=True, inplace=True)
df_components.reset_index(drop=True, inplace=True)
df_components.index += 1
df_components['ID'] = df_components.index
Пример вывода:
DESCRIPTION ID
1 AIR BAGS 1
2 AIR BAGS:FRONTAL 2
3 AIR BAGS:FRONTAL:SENSOR/CONTROL MODULE 3
4 AIR BAGS:SIDE/WINDOW 4
Создайте COMP_ID
в наборе :
def create_component_id_column(row):
found = df_components[df_components['DESCRIPTION'] == row['COMPDESC']]
return found.ID if len(found.index) > 0 else None
dataset['COMP_ID'] = dataset.apply(lambda row: create_component_id_column(row), axis=1)
Однако это дает мне ошибку ValueError: Wrong number of items passed 248, placement implies 1
. Будучи 248 количество предметов на df_components
.
Как я могу создать этот новый столбец с идентификатором из элемента, найденного в df_components
?