python - 求解多个参数的方程/表达式

标签 python pandas numpy

我有以下数据框:

  ID Model_form     A      C     Actual
  1  Exp           2     1.4       4
  2  Power model   1     0.2       3
  3  Log           0.6   6         7

我正在尝试根据模型形式求解不同的方程:

 If model form column contains 'exp' - A*(1-exp(C*actual))
 If model form column contains 'pow' - A*(actual^C)
 If model form column contains 'log' - A* Ln(1+C*optimal)

目前我正在解决这个问题,如下,

   c1 = df['Model_form']].str.contains('exp', flags = re.IGNORECASE)
   c2 = df['Model_form']].str.contains('pow', flags = re.IGNORECASE)
   c3 = df['Model_form']].str.contains('log', flags = re.IGNORECASE)

   df['Actual(y)'] = np.select([c1,c2,c3], [df.eval(df['A']*(1-
   np.exp(df['C']*df['Actual'])),df['A']* 
   (df['Actual']**df['C']),df['A']*np.log(1+df['C']*df['Actual']))])

我收到错误:

   eval() takes from 2 to 3 positional arguments but 4 were given

最佳答案

c1 = df['Model_form'].str.contains('exp', flags = re.IGNORECASE)
c2 = df['Model_form'].str.contains('pow', flags = re.IGNORECASE)
c3 = df['Model_form'].str.contains('log', flags = re.IGNORECASE)

labels=[df.eval(df['A']*(1-np.exp(df['C']*df['Actual']))),df.eval("A*(Actual**C)"),df.eval(df['A']*np.log(1+df['C']*df['Actual']))]

最后:

df['Actual(y)']=np.select([c1,c2,c3],labels)

df 的输出:

    ID  Model_form      A       C      Actual   Actual(y)
0   1   Exp             2.0     1.44    4       -632.696658
1   2   Power model     1.0     0.20    3.0     1.245731
2   3   Log             0.6     6.00    7.0     2.256720

注意:在第一个和第三个条件中使用df.eval()是没有意义的,因为单独df['A']*(1- np.exp(df['C']*df['实际']))df['A']*np.log(1+df['C']*df[' Actual']) 正在为您提供所需的输出,而 df.eval() 没有执行任何操作(条件 2 除外)!!

您收到此错误:

 eval() takes from 2 to 3rd positional arguments but 4 were given

由于第一个条件中缺少括号):

df.eval(df['A']*(1-np.exp(df['C']*df['Actual'])))
                                                ^              
                                         #added ) parenthesis

关于python - 求解多个参数的方程/表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67880647/

相关文章:

python - 如何从多个等长数组中删除相同的随机项?

javascript - 使用参数客户端从 python 3 执行 javascript

python - 在数据框中的其他列上使用应用函数的新列

python - 如何将更新的DataFrame实时输入到sql或db中

Python TensorFlow - 什么是 tf.flags.FLAGS?

Python 类型错误 : UMat() missing required argument 'ranges' (pos 2)

python - 有什么理由给 self 一个默认值吗?

python - 是否可以将按钮添加到 Wagtail 设置页面?

python - 将小时(00 到 23)添加到日期列

python - 使用 numpy 数组计算时放置条件