2016-04-25 20 views
1

Ich habe einen Datenrahmen mit, sagen wir, 4 Zeilen mit r1 bis r4 und 2 Spalten ("c1" und "c2"). Die Werte in dieser Datenrahmen/Matrix „ein ij“ wie in (Pseudocode):Multiplizieren Reihen in Pandas Datenrahmen

dataframe = c1 c2 
      r1 a11 a12 
      r2 a21 a22 
      r3 a31 a32 
      r4 a41 a42 

ich jetzt, auf sehr effiziente Art und Weise berechnen möchte (denken viele, viele Spalten), das Produkt der Reihen.

Genauer gesagt, würde Ich mag eine Liste mit der Anzahl der Elemente der Spalten gleich Zahl bilden, die, wie der i te Element das Produkt aller Reihen hat:

list_ = [a11 * a21 * a31 * a41, a12 * a22 * a32 * a42] 

In Wirklichkeit habe ich Tausende von Spalten, aber nur um 4 Zeilen.

Ich schaute auf die Funktion "sum (...)" des Datenrahmens (mit seinem "Achse" -Argument) und es ist etwas, das ich brauche, aber in einer Multiplikationsversion. Ich bin mir nicht sicher, wie ich das machen soll.

+1

Es wäre schön, wenn Sie einen Code geschrieben kopieren wir könnten in unsere Terminals und spielen mit. Nichts, was Sie gepostet haben, wird wörtlich ausgeführt. – ChrisP

Antwort

1

IIUC Sie prod verwenden können, die das Produkt aller Elemente berechnen spaltenweise, können Sie dann tolist auf das Ergebnis rufen bei Bedarf:

In [23]: 
df = pd.DataFrame(np.arange(12).reshape(4,3), columns=list('abc')) 
df 
​ 
Out[23]: 
    a b c 
0 0 1 2 
1 3 4 5 
2 6 7 8 
3 9 10 11 

In [26]: 
df.prod() 

Out[26]: 
a  0 
b 280 
c 880 
dtype: int64 

In [25]: 
df.prod().tolist() 

Out[25]: 
[0, 280, 880] 
+0

Wie multipliziert man nur zwei spezifische Zeilen (zum Beispiel '2' und' 3')? – Sigur

Verwandte Themen