我正在挑选同一首字母的名字。
当结果超过2的任何行时,它会自动重复第一行和最后一行以外的部分,尽管底部语句仍然读取非重复行。 Drop_duplicates()
根本不起作用,无法删除重复的行。
红利问题:为什么当只有一个匹配的行时,值选择Numbers>13908
无效?
答案 0 :(得分:0)
如果我理解正确的话,
import pandas as pd
namesDf = pd.DataFrame()
namesDf['Names'] = ['Emily', 'Elizabeth', 'Erin', 'Erica', 'Erin', 'Erica']
namesDf['Numbers'] = [123144, 23423, 13909, 14000, 13909, 14000]
DataFrame输出:
Names Numbers
0 Emily 123144
1 Elizabeth 23423
2 Erin 13909
3 Erica 14000
4 Erin 13909
5 Erica 14000
现在我们删除重复项:
namesDf = namesDf[namesDf.Numbers > 13908].drop_duplicates('Numbers', keep = 'first')
这将保留第一个实例并删除其他重复实例
Names Numbers
0 Emily 123144
1 Elizabeth 23423
2 Erin 13909
3 Erica 14000
要保留最后一个实例并删除其他实例,请将keep更改为last:
namesDf = namesDf[namesDf.Numbers > 13908].drop_duplicates('Numbers', keep = 'last')
如果要删除发生重复的所有实例,请将keep属性更改为false:
namesDf = namesDf[namesDf.Numbers > 13908].drop_duplicates('Numbers', False)
这是你期望的吗?