我正在尝试在我的数据框上使用drop_duplicates方法,但是我得到了
错误。请参阅以下内容:
我正在使用的代码:
df = db.drop_duplicates()
我的数据库很大,包含字符串,浮点数,日期,NaN, bool 值,整数...任何帮助,我们感激不尽。
最佳答案
drop_duplicates无法与您的数据框中的列表一起使用,因为错误消息暗示了这一点。但是,您可以将重复项放在转换为str的数据帧上,然后使用结果中的索引从原始df中提取行。
设置
df = pd.DataFrame({'Keyword': {0: 'apply', 1: 'apply', 2: 'apply', 3: 'terms', 4: 'terms'},
'X': {0: [1, 2], 1: [1, 2], 2: 'xy', 3: 'xx', 4: 'yy'},
'Y': {0: 'yy', 1: 'yy', 2: 'yx', 3: 'ix', 4: 'xi'}})
#Drop directly causes the same error
df.drop_duplicates()
Traceback (most recent call last):
...
TypeError: unhashable type: 'list'
解决方案
#convert hte df to str type, drop duplicates and then select the rows from original df.
df.loc[df.astype(str).drop_duplicates().index]
Out[205]:
Keyword X Y
0 apply [1, 2] yy
2 apply xy yx
3 terms xx ix
4 terms yy xi
#the list elements are still list in the final results.
df.loc[df.astype(str).drop_duplicates().index].loc[0,'X']
Out[207]: [1, 2]
关于python - Pandas drop_duplicates方法不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43855462/