![](/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.