如何将控制行的平均基线值填充到平均基线列中的实验行
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()
我有 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()