所以说我有一些数据如下:
patient_id lab_type value
1 food 10
1 food 8
2 food 3
2 food 5
1 shot 4
1 shot 10
2 shot 2
2 shot 4
然后,我将诸如
groupby(['patient_id', 'lab_type'])
之后,我想在
value
上汇总,但每个lab_type
都不同。在food
上,我想使用mean
进行汇总;在shot
上,我想使用sum
进行汇总。最终数据应如下所示:
patient_id lab_type value
1 food 9 (10 + 8 / 2)
2 food 4 (3 + 5 / 2)
1 shot 14 (10 + 4)
2 shot 6 (2 + 4)
最佳答案
对于食物,我想使用均值进行汇总,而在出手时,我希望使用总和进行汇总。
只需使用.apply
并传递自定义函数即可:
def calc(g):
if g.iloc[0].lab_type == 'shot':
return sum(g.value)
else:
return np.mean(g.value)
result = df.groupby(['patient_id', 'lab_type']).apply(calc)
在这里
calc
接收每个组的数据帧,如Panda's split-apply-combine中所示。结果,您得到了想要的东西:patient_id lab_type
1 food 9
shot 14
2 food 4
shot 6
dtype: float64
关于python - Pandas :根据组的不同汇总,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34981042/