Я преобразую фрейм данных из длинного в широкоформатный формат, однако проблема, с которой я сталкиваюсь, заключается в создании правильного числа переведенных столбцов и динамическом переименовании столбцов нового фрейма данных.
Итак, допустим, у меня естьПримерный кадр данных выглядит следующим образом:
data = {'name':['Tom', 'nick', 'Tom', 'nick','Tom'], 'id':[20, 21, 20, 21,22], 'plan' : [100,101,102,101,100], 'drug' : ['a','b','b','c','a']}
df = pd.DataFrame(data)
drug id name plan
a 20 Tom 100
b 21 nick 101
b 20 Tom 102
c 21 nick 101
a 22 Tom 100
Поэтому для каждого имени и идентификатора я хочу создать несколько столбцов для плана и лекарств.Например, есть 3 разных плана и 3 разных препарата, поэтому в идеале я должен получить 6 новых столбцов, которые указывают, был ли принят конкретный план / препарат или нет.
Я пытался перейти с длинного на широкий, но яне получить желаемый результат.Преобразование длинных в широкие:
df1 = df.groupby(['name','id'])['plan', 'drug'].apply(lambda x: pd.DataFrame(x.values)).unstack().reset_index()
Фактический результат:
name id 0 1 0 1
Tom 20 100 102 a b
nick 21 101 101 b c
Tom 22 100 None a None
Ожидаемый результат:
name age 100 101 102 a b c
Tom 20 1 0 1 1 1 0
Tom 22 1 0 0 1 0 0
nick 21 0 1 0 0 1 1