我经常试着做以下的手术,但现在有一个对熊猫最有效的方法:
我有以下示例pandas dataframe,其中有两列NameAge

import pandas as pd

data = [['Alex',10],['Bob',12],['Barbara',25], ['Bob',72], ['Clarke',13], ['Clarke',13], ['Destiny', 45]]

df = pd.DataFrame(data,columns=['Name','Age'], dtype=float)

print(df)
      Name   Age
0     Alex  10.0
1      Bob  12.0
2  Barbara  25.0
3      Bob  72.0
4   Clarke  13.0
5   Clarke  13.0
6  Destiny  45.0

我想删除在Name中有匹配值的所有行。在示例df中,有两个Bob值和两个Clarke值。因此,预期产出将是:
      Name   Age
0      Bob  12.0
1      Bob  72.0
2   Clarke  13.0
3   Clarke  13.0

因此我假设有一个重置索引。
一个选项是将Name的所有唯一值保留在一个列表中,然后遍历dataframe以检查是否有重复的行那将是非常低效的。
此任务是否有内置函数?

最佳答案

使用duplicated

df[df.Name.duplicated(keep=False)]
     Name   Age
1     Bob  12.0
3     Bob  72.0
4  Clarke  13.0
5  Clarke  13.0

08-20 03:07