我经常试着做以下的手术,但现在有一个对熊猫最有效的方法:
我有以下示例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
我想删除在
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