Выполните расчеты по списку, представленному в столбце панелей данных.

1

У меня есть следующий кадр:

    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

Как мне это сделать?

Теги:
pandas
python-3.x

1 ответ

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]
  • 1
    Отлично! Благодарю. Знаете ли вы, как я могу округлить число до макс. 2 цифры после точки?
  • 1
    @Bella - тогда используйте df['calc'] = [round(sum(x[-2:]) / sum(x), 2) for x in df.B]

Ещё вопросы

Сообщество Overcoder
Наверх
Меню