如何删除和过滤数据框中的重复条目

How to remove and filter repeated entries in dataframe

我有一个包含以下 3 列的数据框

  ID       Department      Number
---------------------------------
2324              Art           4
2324             Math           1
2324              Art           3
2400          Science           2
2593             Tech           5
2593             Math           1

我正在尝试先按 ID,然后按编号进行过滤。如您所见,有些 ID 重复。我想先找到重复的ID,然后选择最高对应的Number。

例如,您可以看到 ID 2324 重复了 3 次。 (4, 1, 3) 是与 2324 的每个条目对应的数字。由于 4 是较大的数字,因此我选择带有 4 的条目。我想过滤数据帧以获得此输出:

   ID       Department      Number
---------------------------------
2324              Art           4
2400          Science           2
2593             Tech           5

到目前为止,这是我的代码:

for previous, current in zip(df['ID'], df['ID'][1:]):
   for i, j in zip(df['Number'], df['Number'][1:]):
     if previous == current:
        if j> i:

但是,我不知道我应该在正确的旁边添加什么print(previous, j)。 如果我将 print(previous, j) 添加到嵌套循环中,我会得到重复的条目。 例如,如果我的代码是

for previous, current in zip(df['ID'], df['ID'][1:]):
   for i, j in zip(df['Number'], df['Number'][1:]):
     if previous == current:
        if j> i:
          print(previous, j)

它输出

2324       4
2324       4
2324       4
2324       4
2324       4
2324       4        
2593       5   
2593       5
2593       5   
2593       5 

我要它输出:

2324       4     
2593       5   

我还希望它包含未重复的 ID,因此在本例中为 2400 2。 此外,我不知道如何将正确的部门名称附加到嵌套循环中。

感谢所有花时间阅读本文并帮助我的人。非常感谢。

使用:

df.loc[df.groupby('ID')['Number'].idxmax()]