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
我们可以在这里使用 groupby
和 idxmax
。然后将该索引与具有最高值的索引进行比较:
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
感谢您阅读本文并试图帮助我。我想分析学生在完成测试中的最后一个问题后做了什么。我正在 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 |
我们可以在这里使用 groupby
和 idxmax
。然后将该索引与具有最高值的索引进行比较:
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