学习实验
在一系列的学习实验中,我想统计每个实验中在后续实验中提高成绩的参与者人数(排名1最高(。此外,我还想统计一下每个实验中后来达到最高排名的参与者人数。
这是我加载到pandas数据帧(df_learning(中的学习实验csv文件的一个简短的、经过净化的版本。
实验 | 受试者 | 排名||
---|---|---|---|
A | Alpha | <1>||
A | Bravo | 2 | |
A | Charlie | 3 | |
A | Delta | 4 | |
回声 | 5 | ||
B | Alpha | <1>||
B | Charlie | 2 | |
B | 回声 | 3 | |
B | 狐步 | 4 | |
B | 高尔夫 | 5 | |
B | 印度 | 6 | |
B | 朱丽叶 | 7 | |
C | 朱丽叶 | <1>||
C | Bravo | <2>||
C | 查理 | 3 |
您可以使用groupby.cummax
,然后使用布尔索引:
m = df['Rank'].sub(df.groupby('Subject')['Rank'].cummax()).lt(0)
improved_rank = df.loc[m, 'Subject'].unique()
输出:['Charlie', 'Echo', 'Juliet']
reached_top_rank = df.loc[m&df['Rank'].eq(1), 'Subject'].unique()
输出:['Juliet']