假设我有来自重复测量研究的数据集,如下所示:
control dose_high dose_low gender participant
0 4 6 4 m 1
1 3 5 5 f 2
2 2 8 6 m 3
为了分析这些数据,我想将其转换为堆叠格式,将性别作为协变量:
stacked = df[['dose_high', 'dose_low', 'control']].stack()
df2 = stacked.reset_index()
print df.merge(df2, how='outer', left_index=True, right_index=False, right_on="level_0")[['gender', 'participant', 'level_1', 0]]
这会产生正确的结果:
gender participant level_1 0
0 m 1 dose_high 6
1 m 1 dose_low 4
2 m 1 control 4
3 f 2 dose_high 5
4 f 2 dose_low 5
5 f 2 control 3
6 m 3 dose_high 8
7 m 3 dose_low 6
8 m 3 control 2
但是,这感觉是一种相当糟糕的方法。有没有我想念的更清洁的方法?