![](/img/trans.png)
[英]What is the fastest way to compute sum of weighted products between columns?
[英]Fastest way to compute weighted sum of dataframe across rows
我有一个包含一些列的数据框。 我想对一列应用一些转换,并将其用作计算其他列的加权和的权重。 问题是我现在做的方式太长了。 有没有更快的方法来做到这一点?
我目前正在计算一个新列,转置,并按照几乎所有答案的建议使用df.dot
。 问题是我有一个非常大的数据框,所以这种方法需要很长时间。
例如,给定以下 df
col1 col2 col3
0.1 0.2 0.3
1.4 1.5 1.6
1.9 1.8 1.7
我创建了一个新列,权重,即1/col3
col1 col2 col3 weight
0.1 0.2 0.3 3.333
1.4 1.5 1.6 0.625
1.9 1.8 1.7 0.588
然后我对重量进行转置和df.dot
以获得
col1 col2
2.32 2.66
我检查了链接的答案,没有使用np.dot
,而是DataFrame.dot
,我希望这应该更快,但是如果使用没有巨大 RAM 的大型 DataFrames,它应该仍然很慢:
w = 1 / df.col3
arr = np.dot(df.to_numpy().T, w.to_numpy())
df1 = pd.DataFrame([arr], columns=df.columns)
print (df1)
col1 col2 col3
0 2.32598 2.66299 3.0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.