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

按多列对数据帧进行分组[重复]

仲孙疏珂
2023-03-14

我想按多个列对熊猫数据框进行分组。每个Row都有一个整数、一个Name和一个额外的数值。我希望最终的Dataframe包含Name具有最高整数的每一行。

values = {'Int': [1,1,1,2,2,1],
          'Name': ['Tom', 'Jim', 'Jan','Tom', 'Tom', 'Lucas'],
          'Bill':[0.5,0.2,0.2,0.7, 0.8, 0.2]}

df = pd.DataFrame.from_dict(values)

   Int   Name  Bill
0    1    Tom   0.5
1    1    Jim   0.2
2    1    Jan   0.2
3    2    Tom   0.7
4    2    Tom   0.8
5    1  Lucas   0.2

通过分组数据帧,只有第0行应该消失。第3行和第4行仍应包括在数据框中。

共有1个答案

益源
2023-03-14

IIUC,您可以将Int列与每个Name的最大Int进行比较,如下所示:

df[df['Int'] == df.groupby('Name')['Int'].transform('max')]

output:
    Int Name    Bill
1   1   Jim 0.2
2   1   Jan 0.2
3   2   Tom 0.7
4   2   Tom 0.8
5   1   Lucas   0.2
 类似资料:
  • 问题内容: 带有以下数据 我想产生以下输出: 如果我按价格分组并显示最大日期和最小日期,那么我将得到以下不是我想要的内容(请参见重叠的日期)。 因此,基本上我想做的是根据组列产品和价格对数据进行逐步更改。 什么是最干净的方法来做到这一点? 问题答案: 有一种(或多或少)解决此类问题的已知技术,涉及两个调用,如下所示: 输出:

  • 我有一个熊猫数据框,格式如下: df: 现在我想将其分为两列,如下所示: 输出: 我想得到每一行的计数,如下所示。预期产出: 如何获得我的预期输出?我想找出每个“col2”值的最大计数?

  • 我有一个数据帧,我想按两个参数分组(1)相同的第一列中的连续编号和(2)第二列中的匹配值 数据帧: 组1包括前2行,因为30和31是连续的,第二列匹配。创建组2是因为Col1中的31和35不是连续的。创建组3是因为H和E不匹配。 在pandas groupby中对列表中的行进行分组 我很感谢你给我的建议

  • 我有一个像这样的数据框- 我有一个这样的列表- 现在,我想根据列名列表对数据框进行排序 因此,新的数据框将有列名称-

  • 我有一个pandas数据帧像: 我想按第一列进行分组,并将第二列作为行中的列表:

  • 假设我有一个包含列,和的数据帧,我想按升序按列排序,按降序按列排序,如何我要这么做吗?