0
我想在我的數據框上使用drop_duplicates方法,但我得到一個 錯誤。請參閱以下內容:熊貓drop_duplicates方法不工作
error: TypeError: unhashable type: 'list'
的代碼我使用:
df = db.drop_duplicates()
我的DB是巨大的,包含字符串,浮點數,日期,NaN的,布爾,整數...任何幫助表示讚賞。
我想在我的數據框上使用drop_duplicates方法,但我得到一個 錯誤。請參閱以下內容:熊貓drop_duplicates方法不工作
error: TypeError: unhashable type: 'list'
的代碼我使用:
df = db.drop_duplicates()
我的DB是巨大的,包含字符串,浮點數,日期,NaN的,布爾,整數...任何幫助表示讚賞。
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.iloc[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.iloc[df.astype(str).drop_duplicates().index].loc[0,'X']
Out[207]: [1, 2]
工程很好,謝謝! –
顯然,它包含了*列表*這是造成錯誤。一般來說,我認爲列表的DataFrame是代碼味道... –