Wie packe ich eine Reihe von Tupeln in Pandas aus?

Manchmal ende ich mit einer Reihe von Tupeln / Listen, wenn ich Pandas benutze. Dies ist häufig der Fall, wenn Sie beispielsweise eine Gruppierung durchführen und eine Funktion übergeben, die mehrere Rückgabewerte hat:

import numpy as np
from scipy import stats
df = pd.DataFrame(dict(x=np.random.randn(100),
                       y=np.repeat(list("abcd"), 25)))
out = df.groupby("y").x.apply(stats.ttest_1samp, 0)
print out

y
a       (1.3066417476, 0.203717485506)
b    (0.0801133382517, 0.936811414675)
c      (1.55784329113, 0.132360504653)
d     (0.267999459642, 0.790989680709)
dtype: object

Wie kann ich diese Struktur richtig "entpacken", damit ich einen DataFrame mit zwei Spalten erhalte?

Eine verwandte Frage ist, wie ich entweder diese Struktur oder den resultierenden Datenrahmen in zwei Serien- / Array-Objekte entpacken kann. Das funktioniert fast:

t, p = zip(*out)

aber est ist

 (array(1.3066417475999257),
 array(0.08011333825171714),
 array(1.557843291126335),
 array(0.267999459641651))

und man muss den zusätzlichen Schritt des Zusammendrückens unternehmen.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage