2013-05-07 15 views
6

Czy można pomnożyć wszystkie kolumny razem w obiekcie Pandas.DataFrame, aby uzyskać pojedynczą wartość dla każdego wiersza w DataFrame?Pomnożenie wszystkich kolumn w ramce danych Pandy razem

Jako przykład, używając

df = pd.DataFrame(np.random.randn(5,3)*10) 

Chcę nowy DataFramedf2 gdzie df2.ix[x,0] będzie miał wartość df.ix[x,0] * df.ix[x,1] * df.ix[x,2].

Jednak nie chcę tego zakodować, jak mogę użyć pętli, aby to osiągnąć?

Znalazłem funkcję df.mul(series, axis=1), ale nie mogę znaleźć sposobu, aby użyć tego do mojego celu.

Odpowiedz

13

Można użyć DataFrame.prod():

>>> df = pd.DataFrame(np.random.randint(1, 10, (5, 3))) 
>>> df 
    0 1 2 
0 7 7 5 
1 1 8 6 
2 4 8 4 
3 2 9 5 
4 3 8 7 
>>> df.prod(axis=1) 
0 245 
1  48 
2 128 
3  90 
4 168 
dtype: int64 

Można też applynp.prod, co jest, co ja pierwotnie zrobione, ale zwykle, gdy dostępne metody bezpośrednie są szybsze.

>>> df = pd.DataFrame(np.random.randint(1, 10, (5, 3))) 
>>> df 
    0 1 2 
0 9 3 3 
1 8 5 4 
2 3 6 7 
3 9 8 5 
4 7 1 2 
>>> df.apply(np.prod, axis=1) 
0  81 
1 160 
2 126 
3 360 
4  14 
dtype: int64 
Powiązane problemy