#python #pandas #dummy-variable
#python #pandas #фиктивная переменная
Вопрос:
У меня есть длинный набор данных с идентификатором пациента в качестве индекса (‘PatientGuid’) и группой. Я хотел бы сделать одну запись для каждого пациента с фиктивными показателями для группы.
import pandas as pd
df = pd.DataFrame({"PatientGuid" : ["00023761-9D8D-445B-874C-2424CC7CF620","00023761-9D8D-445B-874C-2424CC7CF620",
"00023761-9D8D-445B-874C-2424CC7CF620","0005D9BD-0247-4F02-B7EE-7C1B44825FA1",
"0005D9BD-0247-4F02-B7EE-7C1B44825FA1","0005D9BD-0247-4F02-B7EE-7C1B44825FA1",
"0005D9BD-0247-4F02-B7EE-7C1B44825FA1","0005D9BD-0247-4F02-B7EE-7C1B44825FA1",
"000B4862-7CE7-4EC5-8043-A97FCD74BD78","000B4862-7CE7-4EC5-8043-A97FCD74BD78"],
"group" : ["600","272","909","789","272", "696", "v70", "692", "380", "401" ]})
df = df.set_index("PatientGuid")
df.info()
Однако, когда я делаю pd.get_dummies, я получаю несколько записей для каждого пациента.
df2 = pd.get_dummies(df, columns=['group'], prefix="dx")
df2
Должен ли я преобразовываться из long в wide, прежде чем получать манекены? Могу ли я обработать df2 и свернуть все 0 и 1 в одну строку?
Ответ №1:
IIUC, вы можете взять максимум на основе level=0
pd.get_dummies(df, columns=['group'], prefix="dx").max(level=0)
Комментарии:
1. Идеально! Большое вам спасибо за такое быстрое и прямое решение.