2013-03-15 27 views
6

voglio fare una matrice multiplcation di un dataframe panda e una serieMatrix Moltiplicazione di una Panda dataframe e Serie

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

df è,

a b 
1 4 5 
2 1 2 
3 3 4 

ser è,

0 0.6 
1 0.4 

Il mio risultato desiderato è un prodotto matrice, come ad esempio

ans è,

posso farlo utilizzando operatore punto NumPy e ricostruire la mia 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 

Esiste un metodo nativo in panda per fare questo?

risposta

11

pandi implicitamente allinea l'indice di una serie, utilizzare la funzione dot

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 
Problemi correlati