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

将函数应用于可返回多行的pandas DataFrame

洪和风
2023-03-14
问题内容

我正在尝试转换DataFrame,以便将某些行复制给定的次数。例如:

df = pd.DataFrame({'class': ['A', 'B', 'C'], 'count':[1,0,2]})

  class  count
0     A      1
1     B      0
2     C      2

应该转换为:

  class 
0     A   
1     C   
2     C

这与使用count函数进行聚合相反。有没有一种简单的方法可以在熊猫中实现(不使用for循环或列表推导)?

一种可能是允许DataFrame.applymap函数返回多行(的类似apply方法GroupBy)。但是,我认为现在在大熊猫中是不可能的。


问题答案:

您可以使用groupby:

def f(group):
    row = group.irow(0)
    return DataFrame({'class': [row['class']] * row['count']})
df.groupby('class', group_keys=False).apply(f)

所以你得到

In [25]: df.groupby('class', group_keys=False).apply(f)
Out[25]: 
  class
0     A
0     C
1     C

您可以根据需要固定结果的索引



 类似资料:
  • 问题内容: 我有一个带有timeindex和3列的数据帧,其中包含3D矢量的坐标: 我想对也返回向量的每一行应用转换 但是如果我这样做: 我最后得到了一个以元组为元素的熊猫系列。这是因为apply将在不解压的情况下获取myfunc的结果。如何更改myfunc,以便获得具有3列的新df? 编辑: 以下所有解决方案均有效。Series解决方案确实允许使用列名,而List解决方案的执行速度似乎更快。 问

  • 我必须从二维坐标计算希尔伯特曲线上的距离。使用hilbertcurve包,我构建了自己的“hilbert”函数。坐标存储在数据帧(列1和列2)中。如您所见,我的函数在应用于两个值(test)时有效。 然而,它只是不工作时,应用行明智通过应用函数!这是为什么呢?我到底做错了什么?我需要一个额外的列“希尔伯特”,希尔伯特距离在列“col_1”和“col_2”中给出。 最后一个命令以错误结束: 谢谢你的

  • 下面是一个提供两列结果的函数。 在这个函数中,有一个用于返回结果。 功能: 有没有可能不使用循环就返回行? 如果是这样的话,请与我分享我们如何做到这一点。 我是否能够编写一个函数,在不使用循环的情况下将记录插入到表中? 帮我解决这个问题。 提前谢谢。

  • 问题内容: Flask返回响应后,我需要执行一些代码。我认为为它设置像Celery这样的任务队列不够复杂。关键要求是Flask必须在运行此功能之前将响应返回给客户端。它不能等待函数执行。 对此存在一些现有问题,但是在将响应发送到客户端之后,似乎没有一个答案能解决运行任务的问题,它们仍然同步执行,然后返回响应。 问题答案: 长话短说,Flask没有提供任何特殊功能来完成此任务。对于简单的一次性任务,

  • 问题内容: 我正在使用Postgresql 8.3,并具有以下简单功能,该功能会将a返回 给客户端 现在,我可以使用以下SQL命令来调用此函数并操纵返回的游标,但是游标名称是由PostgreSQL自动生成的 此外,如38.7.3.5中所述,显式地将游标名称声明为函数的输入参数 。返回游标。我可以声明自己的游标名称并使用此游标名称来操纵返回的游标,而不是为我自动生成的Postgresql吗?如果不是

  • Go语言内置支持多返回值,这个在Go语言中用的很多,比如一个函数同时返回结果和错误信息。 package main import "fmt" // 这个函数的返回值为两个int func vals() (int, int) { return 3, 7 } func main() { // 获取函数的两个返回值 a, b := vals() fmt.Println(a