无法使用drop_duplicates从DataFrame中删除重复项

时间:2013-12-02 18:25:20

标签: python pandas dataframe

所以我使用Pandas的DataFrame,python。

我将引用的数据框是通过以下方式创建的:

search = DataFrame([[262,'ny', '20'],[515,'paris','19'],[669,'ldn','10'], [669,'ldn', 10],[669,'ldn',5]],columns = ['subscriber_id','location','radius' ])

title = DataFrame([[262,'director'],[515,'artist'],[669,'scientist']],columns = ['subscriber_id','title' ])

然后合并标题和搜索DataFrame。

mergedTable = merge(title, search, on='subscriber_id', how= 'outer')

这构成了数据框:

   subscriber_id      title location radius
0            262   director       ny     20
1            515     artist    paris     19
2            669  scientist      ldn     10
3            669  scientist      ldn     10
4            669  scientist      ldn      5

正如我们所看到的,它已被正确合并,因此我们现在可以根据搜索的数量为多个订户中的订户提供数据。

现在我不想摆脱具有不同值的多行的订阅者,但我确实希望摆脱重复的行。

这是期望的最终结果:

   subscriber_id      title location radius
0            262   director       ny     20
1            515     artist    paris     19
2            669  scientist      ldn     10
4            669  scientist      ldn      5

删除第3行(第2行的副本)。

我一直在研究这个问题,似乎drop_duplicates()应该可以工作,即

mergedTable.drop_duplicates()

但是这不起作用,行不会被删除。有任何提示/解决方案吗?

1 个答案:

答案 0 :(得分:3)

由于[669,'ldn','10']中的某些字符串,您的半径属于dtype对象。并'10' != 10。转换为整数将起到作用:

>>> mergedTable.radius = mergedTable.radius.astype(int)
>>> mergedTable.drop_duplicates()
   subscriber_id      title location  radius
0            262   director       ny      20
1            515     artist    paris      19
2            669  scientist      ldn      10
4            669  scientist      ldn       5