如何用一列的最大值与另一列的最小值之间的差异将一列中的df按Python分组?

米斯巴·坦维尔(Misbah Tanvir)

我有一个数据框架,看起来像这样:

学生卡 session_id reading_level_id st_week end_week
1个 3334 3 3 3
1个 3335 2 4 4
2 3335 2 2 2
2 3336 2 2 3
2 3337 2 3 3
2 3339 2 3 4

...

每个学生ID有多个session_id,st_weeks和end_weeks。我试图按“ student_id”对数据进行分组,我想计算每个学生的最大(结束周)和最小(结束周)之间的差异。

旨在看起来像这样的输出:

学生卡 差异
1个 1个
2 2

....

我对Python和Stack Overflow还是比较陌生,并且一直在尝试寻找合适的解决方案-希望对您有所帮助。

马特·L。

可能有一种更有效的方法来执行此操作,但是我将其分为几个单独的步骤进行分组,以获取每个id的最大值和最小值,然后创建一个新列来表示差异。randint()在本示例中,我使用了numpy的函数,因为我无权访问示例数据框。

import pandas as pd
import numpy as np

# generate dataframe
df = pd.DataFrame(np.random.randint(0,100,size=(1200, 4)), columns=['student_id', 'session_id', 'st_week', 'end_week'])
# use groupby to get max and min for each student_id
max_vals = df.groupby(['student_id'], sort=False)['end_week'].max().to_frame()
min_vals = df.groupby(['student_id'], sort=False)['st_week'].min().to_frame()
# use join to put max and min back together in one dataframe 
merged = min_vals.join(max_vals)
# use assign() to calculate difference as new column
merged = merged.assign(difference=lambda x: x.end_week - x.st_week).reset_index()
merged
student_id  st_week end_week    difference
0   40  2   99  97
1   23  5   74  69
2   78  9   93  84
3   11  1   97  96
4   97  24  88  64
... ... ... ... ...
95  54  0   96  96
96  18  0   99  99
97  8   18  97  79
98  75  21  97  76
99  33  14  93  79

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从另一列的最大值中检索一列的最小值

根据数组的另一列在一列中聚合最小值最大值-Python

选择一列的最小值,另一列的最大值以及与最大值相关的字段

如何找出一列相对于另一列的最大值和最小值的总和

使用Spark将一列的连续相同值分组,并为每组取另一列的最大值或最小值

R:新列与另一列最大值之间的差异(按组)

根据另一列中的字符保留最小值或最大值

如何选择*并按一列分组,同时选择另一列的最大值?

如何在一列中显示最大值和最小值

按一列分组,然后在熊猫中查找另一列的总和和最大值

在与另一列对应的列中找到最大值和最小值

熊猫,从一列中选择最大值,从另一列中选择最小值

pandas groupby,您将获得一列的最大值和另一列的最小值

SQL分组依据:选择另一列具有其最小值/最大值的值

SQL将一列中的最小值与另一列中的最大日期进行比较

如何从值与另一列匹配的一列中获取最大值?

创建一列,其值是python中另一列范围的最大值

获取一列的值,其中一列为最大值,另一列为最小值

同时按最大值和最小值排序时,哪一列优先?

如何将txt文件中一列的最大值和最小值打印到变量中

用另一列选择最大值/最小值

以另一列的最小值/最大值作为条件作为 SUM 进行测量

如何按用户ID对表进行分组并为另一列获取最大值?

根据从另一列的最大值返回的最小年份值按列进行分组

根据另一列分组的另一列的最大值获取值

从一列中查找最小值和最大值,并从另一列中查找对应的值

如何从表中找到最大值和最小值以及另一列值?

如何根据另一列计算一列中的值之间的差异?

在另一列的两个条目之间查找一列的最小值