Как заполнить средние базовые значения контрольных строк для экспериментов строк в столбце avg baseline - PullRequest
2 голосов
/ 04 ноября 2019

У меня есть кадр данных панд, как показано ниже.

Каждый sessionid представляет эксперимент, я должен установить базовую линию для лечения на основе sessionid, например, sessionid 'a' контрольная группа (0)среднее значение для 3 сеансов равно 2, поэтому для группы лечения «abcd» следует установить базовое значение «без лечения» 0 (контрольная группа). Теперь я их как нанс.

Как мне установить базовый уровень группы лечения в пандах таким образом, чтобы сессионный 'abcd' лечения 'получал базовый уровень как 2 и аналогично для всех обработок. ?

Я полный новичок, поэтому у меня нет идеи, как написать код для этого, прости меня.

treatment sessionid response avgbaseline
0            a         2          2
0            a         2          2
0            a         2          2
abcd         a         3          nan
abcd         a         3          nan
abcd         a         3          nan
0            b         1          1
0            b         1          1
0            b         1          1
efgh         b         2          nan
efgh         b         2          nan
efgh         b         2          nan
0            c         4          4
0            c         4          4
0            c         4          4
ijkl         c         5          nan
ijkl         c         5          nan
ijkl         c         5          nan

#expected result

treatment sessionid response avgbaseline
0            a         2          2
0            a         2          2
0            a         2          2
abcd         a         3          2
abcd         a         3          2
abcd         a         3          2
0            b         1          1
0            b         1          1
0            b         1          1
efgh         b         2          1
efgh         b         2          1
efgh         b         2          1
0            c         4          4
0            c         4          4
0            c         4          4
ijkl         c         5          4
ijkl         c         5          4
ijkl         c         5          4

1 Ответ

0 голосов
/ 04 ноября 2019

IIUC, и обработка 0 всегда является первой записью в сеансе, затем вы можете использовать:

df['avgbaseline'] = df.groupby('sessionid')['avgbaseline'].ffill()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...