如何使用Pasty创建dmatrix,而不必分别写出每个变量名?

时间:2019-04-28 02:37:01

标签: python pandas statsmodels patsy

说我有一个很大的数据框,并且有一些列列表,并且我希望能够将它们放在小样的矩阵中,而不必单独写出每个名称。也就是说,我想从列表中将名称称为列名称列表以形成术语。而不是在数据框列中写出每一项。

例如,使用以下df

    df=pd.DataFrame( {'a':[1,2,3,4], 'b':[5,6,7,8],
                      'c':[8,4,5,3],  'd':[1,3,55,3],
                      'e':[8,4,5,3]})
   df
   >>
        a   b   c   d   e
   0    1   5   8   1   8
   1    2   6   4   3   4
   2    3   7   5   55  5
   3    4   8   3   3   3

据我了解,将其称为d矩阵需要我执行以下操作:

y,x = dmatrices('a~b+c+d+e', data=df) 但是,我希望能够按照以下方式运行更多内容:

   regress=['b', 'c']
   control=['e', 'd']
   y,x=dmatricies('a~{}+{}'.format(' '.join(e for e in regressors), 
   ' '.join(c for c in control)), data=df)

但这是不成功的。

我还尝试使用包含两个条目(例如回归和控制)的字典,其中填充了列名称列表,然后将其输入到dmatricies的第一个条目中,但是它也不起作用。

有人想出一种更有效的方法来将事情纳入patsy矩阵的建议,而不是写出我们希望包含在矩阵中的每个列名称吗?

在此先感谢您是否不清楚。

1 个答案:

答案 0 :(得分:2)

在此处进行for循环

/**
 * The priority-sorted list of middleware.
 *
 * Forces the listed middleware to always be in the given order.
 *
 * @var array
 */
protected $middlewarePriority = [
    \App\Http\Middleware\MyCustomApiAuthMiddleware::class
    \Illuminate\Session\Middleware\StartSession::class,
    \Illuminate\View\Middleware\ShareErrorsFromSession::class,
    \Illuminate\Auth\Middleware\Authenticate::class,
    \Illuminate\Session\Middleware\AuthenticateSession::class,
    \Illuminate\Routing\Middleware\SubstituteBindings::class,
    \Illuminate\Auth\Middleware\Authorize::class,
];