当前位置: 首页 > 知识库问答 >
问题:

使用pandas groupby()。一次在多个列上应用(列表)[重复]

杨柏
2023-03-14

我试图将数据框的多行合并成一行,不同值的列合并成一个列表。有多个列具有不同的值。

df.groupby('a')['b'].apply(list在一个列表中只需设置一列('b'),效果很好,但我不知道如何对多个列进行设置。

数据帧:

   a  b  c       d
0  1  b  1   first
1  1  b  2  second
2  2  c  1   third
3  2  c  2  fourth
4  2  c  3   fifth

首选数据帧后期操作:

   a  b          c                       d
0  1  b     [1, 2]         [first, second]
1  2  c  [1, 2, 3]  [third, fourth, fifth]

有没有一个简单的方法可以做到这一点?

共有1个答案

谢典
2023-03-14
df = df.groupby(['a','b']).apply(lambda x: [list(x['c']), list(x['d'])]).apply(pd.Series)
df.columns =['a','b','c','d']

输出

   a  b          c                       d
0  1  b     [1, 2]         [first, second]
1  2  c  [1, 2, 3]  [third, fourth, fifth]
 类似资料:
  • 我需要在我的熊猫数据框中制作一个列,它依赖于同一行中的其他项目。例如,这是我的数据框。

  • 问题内容: 所以我想做的是:- 相当奇怪的查询,我知道!但是我正在尝试在EntityFramework / Linq中复制此代码- 查看所有示例,当联接使用AND(使用匿名类型)但对OR联接存在相同的结果时,我可以看到一种非常简单的方法? 问题答案: 只需使用where子句进行交叉连接 令人怀疑的是,连接条件或连接条件是否会比此条件更有效,但是可能会导致相同的执行计划。除了性能,它还会产生相同的结

  • 考虑这个例子 我有一个函数,它以作为输入,并返回三个值,我想存储到三个不同的变量。下面的似乎工作正确 然而,当我试图创建相应的变量时,我得到了一个错误 你怎么认为? 我曾经在pandas apply()的返回多列中使用伟大的解决方案,但在当前的pandas中,此解决方案不再有效 谢谢!

  • 假设我有员工数据列表。 使用上面的empList,如何获得两个不同的列表,如年龄

  • 我试图在Haskell中编写一个函数,它可以做以下操作:输入一个整数列表,对于这些整数,使用map,有一个函数应用于它们,返回一个无限的整数列表。然后,我想使用union将foldr应用于列表,这样结果将是列表中这些列表的union。 现在的问题是,当我以10‘函数’[1,2]为例进行计算时,它会首先计算1的无限列表,因为它是一个无限列表,它永远不会对2进行计算。因此,它只返回输入列表中第一个元素

  • 我已经看到了许多关于如何只使用一个文件来实现这一点的示例,但我希望在单个REST调用中接受两个文件列表,并按名称引用每个列表。我用这个作为我的方法: 谁能帮我完成最后一步,从bodyParts中获取实际的输入流?他们有一个getEntity()字段,但我不确定这就是我要找的。