我有一个以下列方式构建的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与原始数据完全相同。
我在这里缺少什么?
答案 0 :(得分:1)
你的代码是正确的但很慢。您可以使用ToArray()
属性来获取ndarray并使用values
一次转换所有向量:
dot()
在我的电脑上,速度提高了约90倍。