Я не уверен, что понимаю условие без изменения (подраздела) фрейма данных в результате деления , но я бы сделал это с помощью оператора loc
, применяя деление только к строки с type == 1
:
df.loc[df['type'].eq(1),['A','B']] = df[['A','B']].div(df['total'], axis=0)
Даю вам:
>>> df
type A B total
0 1 0.444444 0.555556 9
1 2 5.000000 5.000000 10
2 1 0.800000 0.200000 5
Где значения для type != 1
являются неизменными, за исключением того, что они являются числами с плавающей точкой, а не целыми числами (потому что эти столбцы имеют тип float после деления). Если это идет вразрез с вашим состоянием, сообщите мне об этом в комментариях, и я удалю или изменим этот ответ!