2016-06-29 13 views
7

Sto provando a moltiplicare ogni riga di un dataframe panda con un valore diverso e mi chiedo quale sia il modo migliore per farlo.Come moltiplicare ogni riga in dataframe panda con un valore diverso

Per esempio se ho il seguente dataframe:

import numpy as np 
import pandas as pd 
df = pd.DataFrame(np.random.randn(2, 3)) 
df 
    0   1   2 
0 -1.283316 0.849488 1.936060 
1 -2.078575 -0.871570 -0.970261 

voglio moltiplicare ciascun elemento di ogni riga da un diverso in una lista o matrice

vals = [1, 100] 

In questo esempio voglio ciascun articolo nella prima riga da moltiplicare per 1 e ogni articolo nella seconda riga da moltiplicare per 100

il risultato dovrebbe essere pertanto:

 0   1   2 
0 -1.283316 0.849488 1.936060 
1 -207.8575 -87.1570 -97.0261 

ho provato:

df * vals 
df.multiply(vals) 
df.multiply(vals, axis=1) 

Nessuno dei quali il lavoro, anche se non mi aspettavo anche loro, sulla base della mia comprensione di ciò che il codice dovrebbe fare. Non riesco a capire un modo conciso per farlo con i panda, ogni aiuto è apprezzato, grazie.

risposta

8

Il metodo è mul:

df.mul([1, 100], axis=0) 
Out[17]: 
      0   1   2 
0 -1.198766 -1.340028 1.990843 
1 113.890468 -68.177755 -9.060228 
+0

Oh, wow, non riesco a credere che non ho incontrato che in tutta la mia ricerca. Grazie – johnchase

+0

Prego. :) – ayhan