У меня есть фрейм данных 'df' со столбцами 'A' , 'B' , как показано. Я хочу создать новый столбец 'C' и присвоить ему выход функции func () . Однако ограничение заключается в том, что только тем строкам (в "C" ) могут быть назначены такие значения, для которых записи столбца "A" соответствуют "abc" . Для таких строк входной переменной для func () будет соответствующая запись в столбце 'B' .
Например, на прикрепленной фотографии в строке 0 и строке 2 столбец 'A' имеет значения 'abc' . Для таких строк значение в 'C' должно быть вычислено как func () с использованием значения в столбце 'B' (в этом случае либо "2222" или "4444" ).
Примечание: переменные 'var2' , 'var3' являютсянекоторые значения получены в другом месте в моей программе. Мы можем рассматривать их как константы для нашего обсуждения здесь.
Конечно, я могу использовать цикл for и добиться этого, однако яИнтересно, есть ли эффективный способ сделать это с помощью панд или NumPy. Я попытался использовать метод «.where», но кажется, что func () интерпретирует весь столбец «B» как входные данные, а не принимает каждый элемент столбца «B» (т. Е. ... «2222» или «4444»).
def func(var1, var2, var3):
<something>
return(output)
import numpy as np
df['C'] = np.where(data['A'] == 'abc', func(data['B'], var2, var3), " ")