如何删除和过滤数据框中的重复条目
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()]
我有一个包含以下 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()]