В качестве примера проблемы, предположим, что у нас есть кадр данных:
Name Class 0 Aci FB 1 Dan TWT 2 Ann GRS 3 Aci GRS 4 Dan FB
Полученный кадр данных будет df
Name FB TWT GRS 0 Aci 1 0 1 0 Dan 1 1 0 0 Ann 0 0 1
Вы также можете использовать Series.str.get_dummies и DataFrame.groupby для этого:
Series.str.get_dummies
DataFrame.groupby
df.Class.str.get_dummies().groupby(df['Name']).max().reset_index()
[out]
Name FB GRS TWT 0 Aci 1 1 0 1 Ann 0 1 0 2 Dan 1 0 1
Используйте get_dummies с DataFrame.set_index и совокупность max или sum:
get_dummies
DataFrame.set_index
max
sum
#always 0,1 in output df1 = pd.get_dummies(df.set_index('Name')['Class']).max(level=0).reset_index() #if need count values #df1 = pd.get_dummies(df.set_index('Name')['Class']).sum(level=0).reset_index() print (df1) Name FB GRS TWT 0 Aci 1 1 0 1 Dan 1 0 1 2 Ann 0 1 0