我有一个这样的数据框df:
trial id run rt acc
0 1 1 1 0.941836 1
1 2 1 1 0.913791 1
2 3 1 1 0.128986 1
3 4 1 1 0.155720 0
4 1 1 2 0.414175 0
5 2 1 2 0.699326 1
6 3 1 2 0.781877 1
7 4 1 2 0.554666 1
每个id有2个运行,每个运行有70多个试验。每行包含一个试验。因此,层次结构是id-运行-试用。
我只想保留平均acc大于0.5的运行,所以我使用了temp = df.groupby(['id', 'run']).agg(np.average)
和keep = temp[temp['acc']] > 0.5
。
现在,我要从不保留的运行中删除所有试验。
我尝试使用df[df['id'].isin(keep['id'])&df['run'].isin(keep['run'])]
,但这似乎无法正常工作。 df.query似乎也不起作用,因为数据框之间的索引和列不同。
还有另一种方法吗?