首页 > 解决方案 > 如何用 python str.replace 编写一个灵活的函数?

问题描述

我正在使用 statsmodel 包运行分段线性模型。也就是说,我正在尝试,但未能操纵系数标题,以便我可以加入另一个表。

例如,以下是基于变量中的两个节点的两个系数vehicle_age_model

bs(np.clip(vehicle_age_model, 0, np.inf), degree=1, knots=[10, 25])[0]
bs(np.clip(vehicle_age_model, 0, np.inf), degree=1, knots=[10, 25])[1]
bs(np.clip(vehicle_age_model, 0, np.inf), degree=1, knots=[10, 25])[2]

我想要完成的是一个拉动vehicle_age_model(或任何变量)并将其放在一列中的函数。然后根据方括号内的最终数字,拉出另一列中的结。

在上面的示例中,我想要的是具有以下内容的数据框:

variable                               Lower    Upper

vehicle_age_model                      0        10
vehilce_age_Model                      10       25
vehicle_age_Model                      25       np.inf

较低的将始终为零。最后的鞋面,无论多少节,永远是无穷大。

在构建函数之前,我试图弄清楚如何从屏幕中提取变量。

数据框名称是 coeffs。

coeffs['index'].str.replace("bs\(np.clip\(\vehicle_age_model, 0, np.inf\), degree=1, knots=[10, 25]\)[0]", "vehicle_age_model")

尝试上述的不同变体,这并没有改变任何事情。我不确定我应该去哪个方向。

原始数据框

import pandas as pd
dict = {'index': ['bs(np.clip(vehicle_age_model, 0, np.inf), degree=1, knots=[10, 25])[0]'
        , 'bs(np.clip(vehicle_age_model, 0, np.inf), degree=1, knots=[10, 25])[1]'
        , 'bs(np.clip(vehicle_age_model, 0, np.inf), degree=1, knots=[10, 25])[2]']
        , 'coeff': [.5876, -.1662, -.6380]}


df1 = pd.DataFrame.from_dict(dict)

标签: pythonpython-3.xstringstatsmodels

解决方案


推荐阅读