如何将控制行的平均基线值填充到平均基线列中的实验行

How to fill average baseline values of control rows to experiment rows in avg baseline column

我有 pandas 数据框如下。

每个sessionid代表一个实验,我要根据sessionid设置治疗的基线,比如sessionid 'a'control group(0)的3个session的平均值是2所以baseline不治疗0(对照组)的值应设置为治疗组'abcd'。现在我把它们当作 nans。

如何在 pandas 中设置治疗组的基线,以便 sessionid 'a' 治疗 '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

IIUC,且treatment 0总是session中的第一条记录,那么可以使用:

df['avgbaseline'] = df.groupby('sessionid')['avgbaseline'].ffill()