在特定的pandas列中应用矩阵产品

时间:2015-08-10 18:19:49

标签: python matrix pandas matrix-multiplication

我有一个以下列方式构建的pandas DataFrame

   0     1    2     3         4         5         6      7      8     9 
0  42  2012  106  1200  0.112986 -0.647709 -0.303534  31.73  14.80  1096
1  42  2012  106  1200  0.185159 -0.588728 -0.249392  31.74  14.80  1097
2  42  2012  106  1200  0.199910 -0.547780 -0.226356  31.74  14.80  1096
3  42  2012  106  1200  0.065741 -0.796107 -0.099782  31.70  14.81  1097
4  42  2012  106  1200  0.116718 -0.780699 -0.043169  31.66  14.78  1094
5  42  2012  106  1200  0.280035 -0.788511 -0.171763  31.66  14.79  1094
6  42  2012  106  1200  0.311319 -0.663151 -0.271162  31.78  14.79  1094

其中第4列,第5列和第6列实际上是向量的组成部分。我想在这些列中应用矩阵乘法,即将第4,5和6列替换为前一个向量与矩阵相乘的向量。

我做的是

    DC=[[ .. definition of multiplication matrix .. ]]
    def rotate(vector):
            return dot(DC, vector)
    data[[4,5,6]]=data[[4,5,6]].apply(rotate, axis='columns')

我认为应该可以使用,但返回的DataFrame与原始数据完全相同。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

你的代码是正确的但很慢。您可以使用ToArray()属性来获取ndarray并使用values一次转换所有向量:

dot()

在我的电脑上,速度提高了约90倍。