gpt4 book ai didi

python - 如何使用 pasty 创建 dmatrix 而不必单独写出每个变量名称?

转载 作者:太空宇宙 更新时间:2023-11-04 02:00:06 24 4
gpt4 key购买 nike

假设我有一个大数据框和一些列列表,我希望能够将它们放入 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

据我所知,将其调用到 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)

然而,这是不成功的。

我还尝试使用一个包含两个条目的字典,比如 regress 和 control,其中填充了列名列表,然后将其输入到 dmatricies 的第一个条目中,但它也没有用。

有没有人对更有效的方法提出任何建议,以更有效地将内容放入 patsy 的矩阵而不是写出我们希望包含在矩阵中的每一列名称?

提前致谢,如果我不清楚任何事情,请告诉我。

最佳答案

在这里使用for循环

for z in regress:
for t in control:
y,x=dmatrices('a~{}+{}'.format(z,t), data=df)
print('a~{}+{}'.format(z,t))
print(y,x)

a~b+e
[[1.]
[2.]
[3.]
[4.]] [[1. 5. 8.]
[1. 6. 4.]
[1. 7. 5.]
[1. 8. 3.]]
a~c+e
[[1.]
[2.]
[3.]
[4.]] [[1. 8. 8.]
[1. 4. 4.]
[1. 5. 5.]
[1. 3. 3.]]
a~d+e
[[1.]
[2.]
[3.]
[4.]] [[ 1. 1. 8.]
[ 1. 3. 4.]
[ 1. 55. 5.]
[ 1. 3. 3.]]

关于python - 如何使用 pasty 创建 dmatrix 而不必单独写出每个变量名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55886547/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com