У меня есть следующий кадр:
Position A B
0 29644164 71.0 [31, 38, 1, 1]
1 45861974 45.0 [17, 26, 1, 1]
2 58142396 69.0 [37, 31, 0, 1]
3 41223046 75.0 [21, 53, 0, 1]
Я бы хотел сделать вычисления в столбце B. Я хотел бы суммировать 2 числа в 2 последних позициях и разделить их на сумму всех 4 чисел. Затем добавьте результаты в новый столбец "calc"
Таким образом, ядро данных, которое я ожидаю, будет:
Position A B calc
0 29644164 71.0 [3, 5, 1, 1] 0.2
1 45861974 45.0 [2, 2, 1, 1] 0.333
2 58142396 69.0 [3, 7, 0, 1] 0.1
3 41223046 75.0 [3, 2, 0, 1] 0.2
Как мне это сделать?
Использовать список:
df['calc'] = [sum(x[-2:]) / sum(x) for x in df.B]
print (df)
Position A B calc
0 29644164 71.0 [31, 38, 1, 1] 0.028169
1 45861974 45.0 [17, 26, 1, 1] 0.044444
2 58142396 69.0 [37, 31, 0, 1] 0.014493
3 41223046 75.0 [21, 53, 0, 1] 0.013333
Детали:
print ([sum(x[-2:]) for x in df.B])
[2, 2, 1, 1]
print ([sum(x) for x in df.B])
[71, 45, 69, 75]
df['calc'] = [round(sum(x[-2:]) / sum(x), 2) for x in df.B]