我在pandas中有一个数据框,第一列名为x0
,第二列是x1
。它有很多(如100)行。因此,我有100组[x0,x1]
,然后我想生成一个长表达式,每个与一个组相关。更清楚的是,我想要做的任务是生成一个表达式:
exp(b0*x00+b1*x10)+exp(b0*x01+b1*x11)+...exp(b0*(x0 100) + b1*(x1 100))
b0
和b1
都是未知值(符号),稍后我会找到他们的解决方案。
简而言之,我需要表达sigma(exp(b0*x0+b1*x1))
,sigma有100个项目,x0,x1 n
是一个数据帧,但我不知道如何编写循环。
请帮帮我。
答案 0 :(得分:0)
我希望这会有所帮助,我对熊猫并不熟悉,但你需要来自同情的summation(f,(i,a,b))。
基本上,你只需要声明像expr = summation(exp,(i,0,101))之类的东西 在这种情况下,你的'exp'函数已经在其中包含符号b0和b1术语。
当你想要将它打印出来时,你只需要使用pprint(expr)而不是print()。
答案 1 :(得分:0)
一个简单的python for-loop就足以生成该表达式:
>>> import numpy as np # pandas uses numpy arrays
>>> import sympy as sym
>>> x = np.random.rand(5,2).view(dtype=[('x0', np.float), ('x1', np.float)])
>>> b0, b1 = sym.symbols('b0 b1')
>>> x['x0'] # to show the contents
array([[ 0.1389724 ],
[ 0.14091647],
[ 0.08886302],
[ 0.48792306],
[ 0.749205 ]])
>>> expr = 0
>>> for x0, x1 in zip(x['x0'], x['x1']):
... # build up the expression term by term:
... expr += sym.exp(b0 * float(x0) + b1 *float(x1))
...
>>> expr
exp(0.0888630154325879*b0 + 0.597823474111901*b1) + exp(0.138972400914926*b0 + 0.0275642343608167*b1) + exp(0.140916465250792*b0 + 0.0662746588259522*b1) + exp(0.487923064546991*b0 + 0.922545565808876*b1) + exp(0.7492050039088*b0 + 0.911117507753871*b1)