У меня есть другая заданная задача c для изменения формы панды.
У меня тот же python код
import pandas as pd
data = {'ID': [123, 123,124], 'Method': ['angular', 'angular','angular'], 'Colour': ['red', 'blue','Noir'], 'Size': [20, 30,10] }
df = pd.DataFrame (data, columns = ['ID','Method','Colour','Size'])
df
ID Method Colour Size
123 angular red 20
123 angular blue 30
124 angular Noir 10
Со следующим кодом
resul = df.reset_index().set_index(['ID', 'Method', 'index']
).unstack().reset_index() #.groupby(['ID','Method'])
resul.columns = [i if j == '' else i + '_' + str(j)
for i, j in resul.columns.tolist()]
resul
Я получаю следующий результат
ID Method Colour_0 Colour_1 Colour_2 Size_0 Size_1 Size_2
0 123 angular red blue NaN 20.0 30.0 NaN
1 124 angular NaN NaN Noir NaN NaN 10.0
Но нужно, чтобы код считал, сколько цветов имеет каждый идентификатор, а затем сохранил максимум (в связи с df идентификатор = 123 имеет два цвета и ID = 124 имеет один цвет). Таким образом, он сохранит номер два и должен создать только два цвета новостей (coulour_0 и colour_1) вместо 3. То же самое также для столбца Размер . Должно быть только два столбца. Таблица результатов должна выглядеть следующим образом:
ID Method Colour_0 Colour_1 Size_0 Size_1
0 123 angular red blue 20.0 30.0
1 124 angular Noir NaN 10.0 NaN
Не имеет значения, в каком порядке подходит NaN для обоих.
Может кто-нибудь помочь мне? Заранее спасибо