Python: 如何根据每组列中第一次达到最大值来赋值?

Python: How do I assign values according to first time reaching max value in column per group?

感谢您阅读本文并试图帮助我。我想分析学生在完成测试中的最后一个问题后做了什么。我正在 pandas 数据框中对此进行分析。

目前我有下面 table 的前两列,但是,我想创建一个新列并根据第一次的最大值(问题序列#)赋值个别学生被击中。我想创建第三列,但我不知道如何。

有人可以帮我解决这个问题吗?

希望我提供了所有需要的详细信息。否则请随时与我联系。我知道我可以用 .idxmax() 找到最大值的索引,但不是每个学生以及如何在这之前和之后分配值。

Student ID Question sequence # before or after last item?
1 1 Before or last item
1 2 Before or last item
1 3 Before or last item
1 1 after last item
1 2 after last item
2 1 Before or last item
2 2 Before or last item
2 3 Before or last item
2 4 Before or last item
2 1 after last item
2 2 after last item

我们可以在这里使用 groupbyidxmax。然后将该索引与具有最高值的索引进行比较:

m = df.index > df.groupby('Student ID')['Question sequence #'].transform("idxmax")
df['before or after last item?'] = np.where(
    m, 
    "after last item", 
    "Before or last item"
)
    Student ID  Question sequence # before or after last item?
0            1                    1        Before or last item
1            1                    2        Before or last item
2            1                    3        Before or last item
3            1                    1            after last item
4            1                    2            after last item
5            2                    1        Before or last item
6            2                    2        Before or last item
7            2                    3        Before or last item
8            2                    4        Before or last item
9            2                    1            after last item
10           2                    2            after last item