<p>我有一个非常大的数据帧</p>
<pre><code>in>> all_data.shape
out>> (228714, 436)
</code></pre>
<p>我想有效地将许多列相乘在一起。我从for循环和列列表开始——我发现最有效的方法是</p>
<pre><code>from itertools import combinations
newcolnames=list(all_data.columns.values)
newcolnames=newcolnames[0:87]
#make cross products (the columns I want to operate on are the first 87)
for c1, c2 in combinations(newcolnames, 2):
all_data['{0}*{1}'.format(c1,c2)] = all_data[c1] * all_data[c2]
</code></pre>
<p>问题可能是我有87列,大约3800列(是的,这是我想要的)。我的jupyter笔记本和ipython shell都被这个计算搞得喘不过气来。我需要想出一个更好的方法来进行乘法运算。你知道吗</p>
<p>有没有更有效的方法来矢量化和/或处理?也许是使用numpy数组(我的数据帧已经过处理,现在只包含数字和nan,它是从分类变量开始的)。你知道吗</p>