Иногда я использую серию кортежей/списков при использовании Pandas. Это обычное явление, когда, например, выполняется групповое выполнение и передача функции с несколькими возвращаемыми значениями:
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
Каков правильный способ "распаковать" эту структуру, чтобы получить DataFrame с двумя столбцами?
Связанный вопрос заключается в том, как я могу распаковать эту структуру или результирующий фреймворк в два объекта Series/array. Это почти работает:
t, p = zip(*out)
но он t
равен
(array(1.3066417475999257),
array(0.08011333825171714),
array(1.557843291126335),
array(0.267999459641651))
и нужно сделать дополнительный шаг, чтобы сжать его.