代码之家  ›  专栏  ›  技术社区  ›  DGMS89

Groupby索引,并保持给定单个列的最大列值

  •  0
  • DGMS89  · 技术社区  · 1 年前

    脚本: 对于具有重复索引的数据帧,我想在保持最大值的同时进行分组。我在中找到了解决方案 Drop duplicates by index, keeping max for each column across duplicates 然而,这会得到每列的最大值。这混合了不同行的数据,保持了最大值。

    问题: 如果我不想混合不同行的值,而是想保留一行,其中列“C”的值在具有相同索引的行中最高(在这种情况下,我将选择“C”中值最高的行,并保留该行的所有值,而不是与其他行中其他列的高值混合),应该如何执行分组?

    我尝试了什么: 从链接的问题中,我得到

    df.groupby(df.index).max()
    

    并试图将其修改为:

    df.groupby(df.index)['C'].max()
    

    但这会删除数据帧的其他列。

    1 回复  |  直到 1 年前
        1
  •  2
  •   Quang Hoang    1 年前

    你没有提供你的数据样本,所以我只是想采用一种通用的方法。

    也就是说,你可以按以下方式对数据帧进行排序 C 那么 groupby 具有 head :

    # this assumes that index has only one level
    df.sort_values('C', ascending=False).groupby(level=0).head(1)
    

    或者:

    df.sort_values('C').groupby(level=0).tail(1)
    

    也看看这个 related question (不是按索引,而是按列):