如何只保留pandas DataFrame中具有多个值的行?

我经常尝试进行以下操作,但有一个在熊猫中效率最高的即时解决方案:

我有以下示例pandas DataFrame,其中有两列,Name和Age:

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

我想删除名称中具有匹配值的所有行.在示例df中,有两个Bob值和两个Clarke值.因此,预期的输出是:

      Name   Age
0      Bob  12.0
1      Bob  72.0
2   Clarke  13.0
3   Clarke  13.0

我假设有一个重置索引.

一种选择是在列表中保留Name的所有唯一值,然后遍历数据帧以检查重复行.那将是非常低效的.

这个任务有内置函数吗?

最佳答案 使用重复

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