Сравнение двух столбцов даты, чтобы указать, произошла ли запись после другойPython

Программы на Python
Ответить
Anonymous
 Сравнение двух столбцов даты, чтобы указать, произошла ли запись после другой

Сообщение Anonymous »

У меня есть фрейм данных, в котором я хочу вернуть количество (долю) пациентов, которые прошли последующее наблюдение после постановки диагноза заболевания.
Исходный DF (пример 1 пациента)< /p>

Код: Выделить всё

| patient_id | app_date   | diag_date  | cancer_yn |
|------------|------------|------------|-----------|
| 1          | 2024-01-11 | NaT        | NaN       |
| 1          | 2024-03-14 | 2024-03-14 | 1         |
| 1          | 2024-04-09 | NaT        | NaN       |
| 1          | 2024-09-09 | NaT        | NaN       |
Промежуточный DF (указывает, что запись о приеме каждого пациента соответствовала дате постановки диагноза или нет)

Код: Выделить всё

| patient_id | app_date   | diag_date  | cancer_yn | fup_yn |
|------------|------------|------------|-----------|--------|
| 1          | 2024-01-11 | NaT        | NaN       | 0      |
| 1          | 2024-03-14 | 2024-03-14 | 1         | 0      |
| 1          | 2024-04-09 | NaT        | NaN       | 1      |
| 1          | 2024-09-09 | NaT        | NaN       | 1      |
Суммарный DF (свернутый, по группам по Patient_id и value_counts() или что-то похожее

Код: Выделить всё

| patient_with_fup | count |
|------------------|-------|
| 1                | 24    |
| 0                | 67    |
Исходный DF (2-й пример) —
Надеемся реализовать то, что вышеописанное решение было сделано на уровне пациента, но для отделений, скажем, пациент может иметь Diag_yn в нескольких отделениях, но я хочу проверить, проходил ли пациент последующее наблюдение, как и раньше, но для каждого отделения.
Итак, в примере пациент 1 будет записан дважды, 1 для радиологии и еще раз для респираторного отделения, поскольку у него было последующее приложение для обоих отделений.

Код: Выделить всё

dept         | patient_id | app_date   | diag_date  | diag_yn   |
|------------|------------|------------|------------|-----------|
Radiology    | 1          | 2024-01-11 | NaT        | NaN       |
Radiology    | 1          | 2024-03-14 | 2024-03-14 | 1         |
Radiology    | 1          | 2024-04-09 | NaT        | NaN       |
Radiology    | 1          | 2024-09-09 | NaT        | NaN       |
Respiratory  | 1          | 2024-02-11 | NaT        | NaN       |
Respiratory  | 1          | 2024-04-14 | 2024-04-14 | 1         |
Respiratory  | 1          | 2024-06-09 | NaT        | NaN       |
Respiratory  | 1          | 2024-09-09 | NaT        | NaN       |
Respiratory  | 2          | 2024-01-11 | NaT        | NaN       |
Respiratory  | 2          | 2024-03-14 | 2024-03-14 | 1         |
Respiratory  | 2          | 2024-04-09 | NaT        | NaN       |
Respiratory  | 2          | 2024-09-09 | NaT        | NaN       |
Вывод (2-й пример)

Код: Выделить всё

dept        | patient_with_fup | count |
Radiology   |------------------|-------|
| 1                | 1     |
| 0                | 0     |
Respiratory |------------------|-------|
| 1                | 2     |
| 0                | 0     |
Вы можете видеть, что 2-я запись указывает на прием, на котором был поставлен диагноз (

Код: Выделить всё

diag_date
доступен и совпадает с app_date), у этого пациента были последующие приемы, я хочу отметить, что это так (скажем, Follow_ups == 1.
Мне трудно понять, как можно группировать разных пациентов и применять value_counts() к флагу, указывающему, что у пациента были последующие осмотры после диагностического приема. Предложения по основанному способу изменения формы данных и генерации. флаг был бы великолепен.

Подробнее здесь: https://stackoverflow.com/questions/791 ... er-another
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»