有时,使用熊猫时,我会得到一系列元组/列表。例如,在进行分组并传递具有多个返回值的函数时,这很常见:
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))
而且需要采取额外的措施来挤压它。
也许这是最愚蠢的(我猜是最pythonic):
out.apply(pd.Series)
如果您想将列重命名为更有意义的名称,则:
out.columns=['Kstats','Pvalue']
如果您不希望索引的默认名称:
out.index.name=None
问题内容: 我有一个Pandas DataFrame,我想将’lat’和’long’列组合成一个元组。 我尝试使用的代码是: 但是,这返回以下错误: … 我怎么解决这个问题? 问题答案: 适应吧。在处理列数据时,它很方便。 与使用或相比,它不那么复杂且速度更快。诸如此类的速度是的两倍,但不会给您元组。
我有一个豆子类似于: 我正在尝试反序列化类似于以下内容的JSON: 我无法反序列化该对象,因为每个图像对象都包装在节点对象中,并集中在边对象中。 编辑:为了清楚起见,我不想通过使用bean来完成这一点,这个示例是一个简化,JSON有效负载中的所有数组项都包装在这个和表示中。
问题内容: 在执行groupby(’name’)并在其他列上使用过mean()函数后,我得到了这样的系列 谁能告诉我如何过滤出平均值为1.000000的行?谢谢,我非常感谢您的帮助。 问题答案: In [5]:
问题内容: 说我有以下pandas数据框: 我如何“堆叠”“ b”列中的列表以将其转换为数据框: 问题答案: 更新: 通用矢量化方法-也适用于多列DF: 假设我们有以下DF: 解: 设定: 向量化NumPy方法: 旧答案: 尝试这个: 或@Boud提供的更好的解决方案:
我有一个包含以下[('列1',值),('列2',值),('列3',值),…,('列100',值)]的RDD。我想创建一个包含带有元组的单个列的数据框。 我得到的最接近的是: 然后 但这会产生一个包含列表列的数据帧,而不是元组。
我不小心用一个到错误副本的链接关闭了这个问题。下面是正确的:熊猫将列表的一列拆分成多列。 假设我有一个数据帧,其中一列是列表(长度已知且相同)或元组,例如: ie: 我想将“vals”中的值附加到单独的命名列中。我可以通过迭代行来笨拙地做到这一点: 结果如愿以偿: 有没有更整洁(矢量化)的方式?我尝试使用[]但是我得到一个错误。 给出: 看起来Pandas试图将[]操作符应用于series/dat