У меня есть фрейм данных, и я хотел бы, чтобы значения в одном столбце устанавливались с помощью итеративной функции, как показано ниже.
import pandas as pd
import numpy as np
d = {'col1': [0.4444, 25.4615],
'col2': [0.5, 0.7],
'col3': [7, 7]}
df = pd.DataFrame(data=d)
df['col4'] = df['col1'] * df['col3']/4
def func(df):
a = np.exp(-df['col4'])
n = 1
while df['col2'] < a:
a = a + df['col4'] * 4 / n
n += 1
return n
df['col5'] = func(df)
Я получаю сообщение об ошибке "ValueError: Истинное значение Series являетсянеоднозначно. Используйте a.empty, a.bool (), a.item (), a.any () или a.all (). "Как я могу запустить функцию для каждой строки, чтобы решить проблему серии / неоднозначности?
РЕДАКТИРОВАТЬ: Добавлен ожидаемый результат.
out = {'col1': [0.4444, 25.4615],
'col2': [0.5, 0.7],
'col3': [7, 7],
'col4': [0.7777, 44.557625],
'col5': [0, 49]}
dfout = pd.DataFrame(out)
Я не уверен, что значения в col4 и col5 будутно в соответствии с расчетом я пытаюсь воспроизвести эти значения.
EDIT2: я пропустил n+=1
в цикле while.добавил его сейчас.
EDIT3: я пытаюсь применить
f(0) = e^-col4
f(n) = col4 * f(n-1) / n for n > 0
до f> col2 и затем вернуть значение n в строке.