使用pandas创建矩阵结构

时间:2016-08-31 03:31:32

标签: python pandas numpy dataframe

我已将包含代码和系数数据的以下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 个答案:

答案 0 :(得分:4)

你想在矢量和它的转换之间进行数学运算。使用.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

答案 1 :(得分:4)

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