データフレームにdrop_duplicatesメソッドを使用しようとしていますが、 エラーが発生しています。以下を参照してください。Pandas drop_duplicatesメソッドが機能しない
error: TypeError: unhashable type: 'list'
私が使用していますコード:
df = db.drop_duplicates()
私のDBは、すべてのヘルプは高く評価されています...巨大で、文字列が含まれ、山車、日付、NaNでの、ブール値、整数。
データフレームにdrop_duplicatesメソッドを使用しようとしていますが、 エラーが発生しています。以下を参照してください。Pandas 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がコード臭いであると考えます... –