我经常尝试进行以下操作,但有一个在熊猫中效率最高的即时解决方案:
我有以下示例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