假设我的数据是:
my_list=[[0,'A',10,12,14],
[0,'A',10,13,15],
[0,'A',8,12,13],
[0,'A',9,13,17],
[0,'A',8,11,15],
[0,'B',9,5,7],
[0,'B',11,5,9],
[0,'B',8,7,8],
[1,'A',11,14,9],
[0,'B',8,10,14],
[1,'B',11,6,6],
[1,'A',10,5,9]
[1,'B',9,6,6]]
my_frame=pd.DataFrame(my_list, columns=['id','quality','grade','characteristic 1','characteristic 2'])
我的目标是使用分数作为感兴趣的最大值和最小值,按“id”和“quality”对数据进行分组。所以我编码:
my_group=np.array(my_frame.groupby(['id','quality'])['grade']
.agg(["max grade", max],["min grade", min])
.reset_index())
到目前为止还不错,但我还没有弄清楚如何处理我真正需要的信息:
我想分组,得到所有的案件,等级最高和最低发生,与所有的信息行。换言之,当前对我有效的代码给出了以下信息:
print(my_group)
输出:
[[0,'A',10,8],
[0,'B',11,8],
[1,'A',11,10],
[1,'B',11,9]]
不过,我感兴趣的是带来这样的产出:
[[0,'A',10,12,14],
[0,'A',10,13,15],
[0,'A',8,12,13],
[0,'A',8,11,15],
[0,'B',11,5,9],
[0,'B',8,7,8],
[0,'B',8,10,14],
[1,'A',11,14,9],
[1,'A',10,5,9],
[1,'B',11,6,6],
[1,'B',9,6,6]]
为了尽可能清楚地说明这一点,groupby将为我提供每个“id”和每个“quality”的最大和最小“grade”,但我实际上需要知道我获得此最大和最小“grade”的其余信息(“characteristic 1”和“characteristic 2”),而不管最大“grade”和最小“grade”出现了多少次。
你能引导我通过这个吗?我希望我的问题是清楚的。