2016-04-02 7 views
2

Ich muss einen Python DataFrame Zeile für Zeile erweitern.Sapply Äquivalent in Python?

In R ist die sapply() Funktion schnell & effizient. Beispiel

sapply(1:100, function(i) rnorm(50)) 

erzeugt eine 50 x 100-Matrix von (Standardnormal random) Zahlen, die dann umgesetzt werden können, und/oder in einen Datenrahmen umgewandelt, wie

benötigte

Wie gleiche effizient in Python zu tun ?

+1

Sie können nicht nur eine 'for' Schleife verwenden? Das ist ziemlich genau das, was 'sapply()' unter der Haube ist. –

+0

Eigentlich ist es effizienter zu tun "Matrix (rnorm (5000), nrow = 50)" ... – MichaelChirico

+0

Und sogar innerhalb 'sapply', ist es effizienter zu tun' sapply (integer (100), Funktion (i) rnorm (50)) '(was' replicate' macht). Am effizientesten sehe ich 'Struktur (rnorm (5000), .Dim = c (50L, 100L))'. – MichaelChirico

Antwort

-1

Python kann leicht so etwas durch Liste Verständnis erreichen:

import random as rand 
[[rand.gauss(mu=0, sigma=1) for column in range(50)] for row in range(100)] 

Andernfalls können Sie dann mit dem NumPy Paket erweiterte Matrix-Operationen zu tun.

--Andrea

2

Betrachten Sie die folgende Liste Verständnis Version:

import numpy as np 
import pandas as pd 

df = pd.DataFrame([np.random.randn(50) for i in range(100)])