2013-03-15 28 views
6

BenMatris Çarpma ve Seri

a b 
1 4 5 
2 1 2 
3 3 4 

ser olduğunu bir pandalar dataframe bir matris multiplcation ve

df = pandas.DataFrame({'a':[4,1,3], 'b':[5,2,4]},index=[1,2,3]) 
ser = pandas.Series([0.6,0.4]) 

df olan bir dizi yapmak istiyorum

0 0.6 
1 0.4 

İstenilen sonucum,

gibi bir matris ürünüdür. 0

ans

benim dataFrame

c = a.values.dot(b.transpose()) 
c = pandas.DataFrame(c, index = a.index, columns = ['ans']) 
print c 


    ans 
1 4.4 
2 1.4 
3 3.4 

bunu yapmak için pandalar bir yerli yöntem var mı numpy nokta operatörünü kullanarak ve yeniden yapabilirsiniz, nedir?

cevap

11

pandalar implicity bir dizi endeksi hizalar nokta işlevini kullanın

In [3]: df = pd.DataFrame({'a' : [4,1,3], 'b' : [5,2,4]},index=[1,2,3]) 

In [4]: s = pd.Series([0.6,0.4],index=['a','b']) 

In [5]: df.dot(s) 
Out[5]: 
1 4.4 
2 1.4 
3 3.4