所以我使用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()
但是这不起作用,行不会被删除。有任何提示/解决方案吗?
答案 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