使用pandas创建矩阵结构

7
我已经将包含代码和系数数据的以下CSV文件加载到下面的数据框df中:
CODE|COEFFICIENT  
A|0.5  
B|0.4  
C|0.3

import pandas as pd
import numpy as np
df= pd.read_csv('cod_coeff.csv', delimiter='|', encoding="utf-8-sig")

提供
  ITEM   COEFFICIENT  
0    A       0.5  
1    B       0.4  
2    C       0.3  

从上面的数据框中,我需要创建一个最终的数据框,如下所示,它具有系数乘积的矩阵结构:
     A         B         C        
A   0.25      0.2        0.15  
B   0.2       0.16       0.12  
C   0.15      0.12       0.09

我正在使用np.multiply,但是我没有成功地产生结果。
2个回答

6
您想对向量及其转置进行数学计算。使用.T进行转置,并在两个数据框之间应用矩阵dot函数进行计算。
df = df.set_index('CODE')

df.T
Out[10]: 
CODE             A    B    C
COEFFICIENT    0.5  0.4  0.3

df.dot(df.T)
Out[11]: 
CODE     A     B     C
CODE                  
A     0.25  0.20  0.15
B     0.20  0.16  0.12
C     0.15  0.12  0.09

6

NumPy作为更快的替代方案

pd.DataFrame(np.outer(df, df), df.index, df.index)

enter image description here


定时

样例给出

enter image description here

30,000行数据

df = pd.concat([df for _ in range(10000)], ignore_index=True)

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接