Исходя из желаемого результата, вы хотите pivot
дейтаграммы со столбцом ID
в качестве индекса и формированием нового столбца для каждого из Materials
. Также похоже, что вы хотите сначала отбросить наблюдения с отсутствующим значением (NaN
) в Materials
.
Соединяя эти два шага, можно получить преобразование:
df.dropna(subset=['Materials']) \
.pivot(index='ID', columns='Materials')
С выводом:
id2
Materials Metal Plastic
ID
12 54.0 23.0
13 24.0 NaN
Чтобы отформатировать фрейм данных по вашему желанию, вам нужно еще несколько шагов:
df = df.reset_index()
df.columns = ['ID', 'Metal', 'Plastic']
Форматированный формат данных теперь:
ID Metal Plastic
0 12 54.0 23.0
1 13 24.0 NaN