Фрейм данных Pandas на Python. Пропорции и транспонирование

#python #pandas #dataframe

#python #pandas #фрейм данных

Вопрос:

У меня есть следующий фрейм данных в Pandas. Идея состоит в том, чтобы сгенерировать дополнительные идентификаторы фрейма данных на основе пропорции ТИПА переменной, транспонировав ее в столбцы. Любая помощь приветствуется!

 d = {'ID': [1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2], 'TYPE': ['A','A','A','B','B','B','B','C','C','C','A','A','B','B','B','B','B','B']}
df = pd.DataFrame(data=d)
df


    ID   A       B       C
    1   0.30    0.40    0.3
    2   0.25    0.75    0.0
  

Ответ №1:

Используйте SeriesGroupBy.value_counts с параметром normalize=True и измените форму с помощью Series.unstack :

 df = df.groupby('ID')['TYPE'].value_counts(normalize=True).unstack(fill_value=0)
print (df)
TYPE     A     B    C
ID                   
1     0.30  0.40  0.3
2     0.25  0.75  0.0
  

Затем, если необходимо, столбец из index :

 df = df.rename_axis(None, axis=1).reset_index()
print (df)
   ID     A     B    C
0   1  0.30  0.40  0.3
1   2  0.25  0.75  0.0
  

Комментарии:

1. Идеально, это точный ответ, который я искал 🙂