有时我在使用 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 的正确方法是什么?
一个相关的问题是如何将此结构或生成的数据帧解压缩为两个系列/数组对象。这几乎有效:
t, p = zip(*out)
但它 t
是
(array(1.3066417475999257),
array(0.08011333825171714),
array(1.557843291126335),
array(0.267999459641651))
并且需要采取额外的步骤来挤压它。
原文由 mwaskom 发布,翻译遵循 CC BY-SA 4.0 许可协议
也许这是最直接的(我猜是最pythonic的):
如果您想将列重命名为更有意义的名称,那么:
如果您不想要索引的默认名称: