假设我有一个大数据框和一些列列表,我希望能够将它们放在一个 patsy dmatricies 中,而不必单独写出每个名称。也就是说,我想将列表中的名称称为列名列表以形成术语。而不是写出我的数据框列中的每一个术语。
例如采取以下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
据我了解,将其称为广告矩阵需要我执行以下操作:
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 的 dmatricies,而不是写出我们想要包含在矩阵中的每一个列名?
提前感谢,如果我不清楚任何事情,请告诉我。