df2 = df.pivot(index='GROUP', columns='TYPE', values='COUNT')
df2['div'] = df2[1]/df2[2]
df2.reset_index().melt('GROUP').sort_values('GROUP')
Выход:
GROUP TYPE value
0 A 1 5.000000
3 A 2 10.000000
6 A div 0.500000
1 B 1 3.000000
4 B 2 9.000000
7 B div 0.333333
2 C 1 20.000000
5 C 2 100.000000
8 C div 0.200000
Мой подход состоял бы в том, чтобы изменить форму информационного кадра путем поворота, чтобы у каждого типа был свой столбец. Тогда деление очень простое, а затем, плавя, вы возвращаете его к первоначальной форме. На мой взгляд, это тоже очень удобочитаемое решение.
Конечно, если вы предпочитаете от np.nan
до div
как тип, вы можете заменить его очень легко, но я не уверен, что вы этого хотите.