np.random.seed([3, 14])
df = pd.DataFrame(np.random.randn(5, 3), columns=list('ABC'))
df
A B C
0 -0.602923 -0.402655 0.302329
1 -0.524349 0.543843 0.013135
2 -0.326498 1.385076 -0.132454
3 -0.407863 1.302895 -0.604236
4 -0.243362 -0.211261 -2.056621
最快的计算方式是什么 df.A * 1 + df.B * 2 + df.C * 3
?
本质上,我想要这个数据框:
0 -0.501247
1 0.602741
2 2.046290
3 0.385219
4 -6.835748
答案不能是df.A * 1 + df.B * 2 + df.C * 3
因为列数不能被硬编码。所以,我想计算 df.iloc[:, 0] * 1 + df.iloc[:, 1] * 2, ....
不知怎的。
我对任何 numba
感兴趣解决方案也在那里!
最佳答案
我尝试改进解决方案 - 删除 reshape 并更改排列
:
a = df.dot(np.arange(1, len(df.columns)+1))
print (a)
0 -0.501247
1 0.602741
2 2.046290
3 0.385219
4 -6.835748
dtype: float64
与numpy
相同:
a = pd.Series(np.dot(df.values, np.arange(1, len(df.columns)+1)), index=df.index)
print (a)
0 -0.501247
1 0.602741
2 2.046290
3 0.385219
4 -6.835748
dtype: float64
关于python - 计算列之间加权乘积之和的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46112251/