当前位置: 首页 > 面试题库 >

如何在pandas中打开一系列元组的包装?

柯镜
2023-03-14
问题内容

有时,使用熊猫时,我会得到一系列元组/列表。例如,在进行分组并传递具有多个返回值的函数时,这很常见:

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