【发布时间】:2021-01-29 08:59:31
【问题描述】:
假设我有以下数据框:
index K1 K2 D1 D2 D3
N1 0 1 12 4 6
N2 1 1 10 2 7
N3 0 0 3 5 8
基本上,我想将此数据框转换为以下内容:
index COL1 COL2
K1 D1 = 0*12+1*10+0*3
K1 D2 = 0*4+1*2+0*5
K1 D3 = 0*6+1*7+0*8
K2 D1 = 1*12+1*10+0*3
K2 D2 = 1*4+1*2+0*5
K2 D3 = 1*6+1*7+0*8
COL2 的内容基本上是index 中的向量和COL1 中的向量之间的点积(也称为标量积)。例如,让我们取结果 df 的第一行。在index 下有K1,在COL1 下有D1。查看第一张表,我们知道K1 = [0,1,0] 和D1 = [12,10,3]。这两个“向量”的标量积就是COL2(第一行)中的值。
我正在尝试找到一种不使用嵌套循环的方法(因为这个想法是为了提高效率),但是,我不知道该怎么做。我尝试使用pd.melt() 函数,虽然它让我更接近我想要的,但它并没有完全让我到达我想要的地方。能给我一个提示吗?
【问题讨论】: