Есть два кадра данных, где оба имеют общий user_id
. Давайте назовем их df_A
и df_B
. df_B
имеет одну запись на пользователя. df_A
содержит несколько записей на пользователя , но для каждого пользователя существует одна запись с NaN
.
df_A
user_id start_time time_calc
0 421 2015-10-25 11:42:35 8.97
1 421 2015-10-25 11:51:33 4.85
2 421 2015-10-25 11:56:24 6.77
3 421 2015-10-25 13:03:10 NaN
4 493 2015-10-26 05:08:13 0.85
5 493 2015-10-26 05:09:04 NaN
6 636 2015-10-17 15:30:53 2.55
7 636 2015-10-17 15:33:26 4.17
8 636 2015-10-17 15:37:36 2.35
9 636 2015-10-17 15:39:57 0.32
10 636 2015-10-17 15:40:16 0.43
11 636 2015-10-17 15:40:42 0.65
12 636 2015-10-17 15:41:21 NaN
df_B
user_id last_time
0 100 2015-11-04 01:52:16
1 421 2015-10-25 14:03:23
2 493 2015-10-26 05:09:51
3 636 2015-11-03 20:15:54
4 030 2015-11-03 17:44:20
5 174 2015-10-10 00:20:37
6 437 2015-10-24 12:34:38
7 481 2015-10-28 03:18:24
8 952 2015-10-28 21:07:15
9 197 2015-10-18 14:52:34
Цель состоит в том, чтобы заполнить NaN
в df_A
, выполнив df_B.last_time - df_A.start_time
, но только для Nan
при использовании правильного user_id
для сопоставления записей.
логически: user_id 421 NaN
запись должна быть заполнена с использованием следующих данных:
2015-10-25 14:03:23 - 2015-10-25 13:03:10
df_A.groupby('user_id').time_calc.fillna(df_B.last_time - df_A.time_calc.isnull['start_time'])
К сожалению, это не сработало.