我有一个DataFrame,其中我想通过数值求解使用来自a列的相应元素的方程式来定义每个b列条目。例如,第一个条目,使$ a [0] $和$ b [0] $为列$ a $和列$ b $的第一个条目。给出$ a [0] $和函数$ f(x)= e ^ x-a [0] * x ^ 2 $。我想通过求解$ f $的零来定义$ b [0] $。相同的函数$ f $用于定义$ b [1],b [2] $,依此类推。
当前,我正在通过使用scipy的fsolve通过在b列的条目上进行for循环来做到这一点。确实可以,但是速度很慢,而且我听说过为DataFrames循环使用是一种不好的做法。
对于有关如何创建更快功能的任何建议,我将不胜感激。预先感谢。
答案 0 :(得分:0)
让我们假设只有一个解决方案,那么您可以从这里开始玩
import pandas as pd
import numpy as np
from scipy.optimize import root
def f(x,a):
return np.exp(x) - a*x**2
n = 100
df = pd.DataFrame({"a":np.arange(1, n+1)})
df["sol"] = df["a"].apply(lambda a: root(f,x0=0, args=a).x[0])