Python: создание фиктивных переменных в длинном наборе данных с несколькими записями на индекс

#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. Идеально! Большое вам спасибо за такое быстрое и прямое решение.