Форвардное заполнение на основе значения другого столбца - PullRequest
0 голосов
/ 11 января 2019

Обновление: У меня есть большой фрейм данных панд с admitTime, dumpTime, pat_name, pat_rec, и в нем около 5 миллионов записей. Я пытаюсь переслать заполнение столбцов DistageTime, pat_name, основываясь на значении даты и времени Distage для остальных столбцов и перерыва после этого.

ДФ:

admitTime dischargeTime pat_name pat_rec<br> 2013-12-23 20:20:30 2013-12-23 21:03:00 Alex A4536<br> 2013-12-23 21:00:30 2013-12-23 21:01:00 2013-12-23 21:01:30 2013-12-23 21:02:00 2013-12-23 21:02:30 2013-12-23 21:03:00 2013-12-23 21:03:30 2013-12-23 21:04:00 2013-12-23 21:04:30 2013-12-23 21:05:00 2013-12-23 21:08:30 Sam A4523 2013-12-23 21:06:00 2013-12-23 21:06:30 2013-12-23 21:07:00 2013-12-23 21:07:30 2013-12-23 21:08:00 2013-12-23 21:08:30 2013-12-23 21:09:00 2013-12-23 21:09:30 2013-12-23 21:13:30 Mike A9873 2013-12-23 21:10:00 2013-12-23 21:10:30 2013-12-23 21:11:00 2013-12-23 21:11:30 2013-12-23 21:12:00 2013-12-23 21:12:30 2013-12-23 21:13:00 2013-12-23 21:13:30 2013-12-23 21:14:00<br> 2013-12-23 21:14:30

В идеале я бы хотел, чтобы мой df выглядел как

datetime discchargeTime pat_name pat_rec<br> 2013-12-23 20:20:30 2013-12-23 21:03:00 Alex A4536<br> 2013-12-23 21:00:30 2013-12-23 21:03:00 Alex A4536 2013-12-23 21:01:00 2013-12-23 21:03:00 Alex A4536 2013-12-23 21:01:30 2013-12-23 21:03:00 Alex A4536 2013-12-23 21:02:00 2013-12-23 21:03:00 Alex A4536 2013-12-23 21:02:30 2013-12-23 21:03:00 Alex A4536 2013-12-23 21:03:00 2013-12-23 21:03:00 Alex A4536 2013-12-23 21:03:30<br> 2013-12-23 21:04:00<br> 2013-12-23 21:04:30<br> 2013-12-23 21:05:00 2013-12-23 21:08:30 Sam A4523 2013-12-23 21:05:30 2013-12-23 21:08:30 Sam A4523 2013-12-23 21:06:00 2013-12-23 21:08:30 Sam A4523 2013-12-23 21:06:30 2013-12-23 21:08:30 Sam A4523 2013-12-23 21:07:00 2013-12-23 21:08:30 Sam A4523 2013-12-23 21:07:30 2013-12-23 21:08:30 Sam A4523 2013-12-23 21:08:00 2013-12-23 21:08:30 Sam A4523 2013-12-23 21:08:30 2013-12-23 21:08:30 Sam A4523 2013-12-23 21:09:00<br> 2013-12-23 21:09:30 2013-12-23 21:13:30 Mike A9873 2013-12-23 21:10:00 2013-12-23 21:13:30 Mike A9873 2013-12-23 21:10:30 2013-12-23 21:13:30 Mike A9873 2013-12-23 21:11:00 2013-12-23 21:13:30 Mike A9873 2013-12-23 21:11:30 2013-12-23 21:13:30 Mike A9873 2013-12-23 21:12:00 2013-12-23 21:13:30 Mike A9873 2013-12-23 21:12:30 2013-12-23 21:13:30 Mike A9873 2013-12-23 21:13:00 2013-12-23 21:13:30 Mike A9873 2013-12-23 21:13:30 2013-12-23 21:13:30 Mike A9873 2013-12-23 21:14:00<br> 2013-12-23 21:14:30

Я пытался df[column_name].ffill(), но позже понял, что это не правильно.

Буду очень признателен, если смогу получить какие-либо предложения.

1 Ответ

0 голосов
/ 11 января 2019

Вы можете переслать заливку, , затем , используя логический фильтр, чтобы вернуть значения в NaN:

fill_cols = ['dischargeTime', 'pat_name', 'pat_rec']
df[fill_cols] = df[fill_cols].ffill()
df[fill_cols] = df[fill_cols].mask(df['admitTime'] > df['dischargeTime'])
...