#python #pandas #dataframe
#питон #панды #фрейм данных
Вопрос:
У меня есть набор данных пациентов, например:
и набор данных о заболеваниях каждого пациента (по коду МКБ):
Как я могу пометить каждого пациента, если у него в анамнезе был определенный код МКБ, желаемый результат:
В настоящее время я делаю это с помощью итерации, но это занимает слишком много времени….
Ответ №1:
Если нужны индикаторы — это означает 0, 1
, что используются только значения get_dummies
:
df1 = df1.join(pd.get_dummies(df2.set_index('patient_id')['ICD']).max(level=0), on='patient_id')
Если необходимо ICD
использовать crosstab
:
df2 = df1.join(pd.crosstab(df['patient_id'], df['ICD']), on='patient_id')
Разница в том, что если дублируется парами patient_id
, ICD
.
Комментарии:
1. Большое спасибо!!! Как бы вы изменили код с помощью get_dummies, если ‘ICD’ является строкой, а не числовым?
2. @gtomer — он должен работать одинаково, как для строк, так и для чисел.
3. Для строки я получил следующую ошибку: ‘> =’ не поддерживается между экземплярами ‘str’ и ‘float’
4. @gtomer — там было плохо
)
, нужно).max(level=0)
5. Действительно. Я очень благодарен!!