python - Pandas :从一列中为另一列中的每个唯一值获取最高值

标签 python pandas

如何为另一列中的每个唯一值获取一列中的最大值并返回相同的数据帧结构。 这是一个 pandas 数据框示例?

       reg.nr   counter      value     ID2  categ             date
1       37367       421     231385      93      A       20.01.2004
2       37368       428     235156      93      B       21.01.2004
3       37369       408     234251      93      C       22.01.2004
4       37372       403     196292      93      D       23.01.2004
5       55523       400     247141      139     E       24.01.2004
6       55575       415     215818      139     F       25.01.2004
7       55576       402     204404      139     A       26.01.2004
8       69940       402     62244       175     B       27.01.2004
9       69941       402     38274       175     C       28.01.2004
10      69942       404     55171       175     D       29.01.2004
11      69943       416     55495       175     E       30.01.2004
12      69944       407     90231       175     F       31.01.2004
13      69945       411     75382       175     A       01.02.2004
14      69948       405     119129      175     B       02.02.2004

我想根据“ID2”列的唯一值返回“counter”列的最大值。新的 pandas 数据框应该如下所示:

       reg.nr   counter      value     ID2  categ             date
1       37368       428     235156      93      B       21.01.2004
2       55575       415     215818      139     F       25.01.2004
3       69943       416     55495       175     E       30.01.2004

最佳答案

一种使用drop_duplicates的方法

In [332]: df.sort_values('counter', ascending=False).drop_duplicates(['ID2'])
Out[332]:
    reg.nr  counter   value  ID2 categ        date
2    37368      428  235156   93     B  21.01.2004
11   69943      416   55495  175     E  30.01.2004
6    55575      415  215818  139     F  25.01.2004

对于所需的输出,您可以对两列进行排序,然后重置索引

In [336]: (df.sort_values(['ID2', 'counter'], ascending=[True, False])
             .drop_duplicates(['ID2']).reset_index(drop=True)
          )
Out[336]:
   reg.nr  counter   value  ID2 categ        date
0   37368      428  235156   93     B  21.01.2004
1   55575      415  215818  139     F  25.01.2004
2   69943      416   55495  175     E  30.01.2004

关于python - Pandas :从一列中为另一列中的每个唯一值获取最高值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42050339/

相关文章:

with 语句中的 Python 交互式 REPL

python - 提取最后一次出现的大括号之间的文本

python - 用列拆分 Pandas 数据框

python - 递归 Excel 文件以从树结构中查找顶级项目

python - 如何将下面的 json 读入 pandas 数据帧?

python - 将数据透视表转换为 Pandas 中的 "tidy"数据框

python - 在不占用 CPU 的情况下,在 App Engine 上执行大量 db.delete

python - 使用 cx_Oracle 的 LIKE 中字符串的正确语法是什么?

python - 使用预提交,如何在提交前使用一些钩子(Hook),在推送前使用其他钩子(Hook)

Python Pandas - 发出连续多索引数据帧