как решить Сообщение об ошибке: Ошибка типа: не подлежит обработке Тип: «установить» - PullRequest
1 голос
/ 26 июня 2019

Я пытаюсь сравнить два столбца sar_details_sent_norm_trigrams_ и caap_details_sent_norm_trigrams_ в кадре данных Pandas. Есть и другие столбцы, но я сравниваю эти два.

По сути, я хочу вести записи, в которых текстовые значения для двух столбцов совпадают. Я выполнил несколько подходов, но получаю следующее сообщение об ошибке:

TypeError: unhashable тип: 'set'

Итак, мне нужно либо решить, почему я это получаю, и исправить это, либо попробовать другой подход, конечно. Любой совет будет принята с благодарностью.

Спасибо.

Фрагмент кода:

# Set with unique terms

df_sar['sar_details_sent_norm_trigrams_unique'] = df_sar['sar_details_sent_norm_trigrams_'].apply(lambda x: set([trigram for sent in x for trigram in sent]))

# Set with unique terms

df_caap['caap_details_sent_norm_trigrams_unique'] = df_caap['caap_details_sent_norm_trigrams_'].apply(lambda x: set([trigram for sent in x for trigram in sent]))



#Attempt 1: 

df_caap[df_caap.caap_details_sent_norm_trigrams_unique.isin(df_sar.sar_details_sent_norm_trigrams_unique)]


#Attempt 2:

set(df_caap.caap_details_sent_norm_trigrams_unique).intersection(set(df_sar.sar_details_sent_norm_trigrams_unique))

TypeError Traceback (последний вызов был последним) дюйм () 21

set (df1.columns) .intersection (set (df2.columns)) 22 * ​​1017 * ---> 23 набора (df_caap.caap_details_sent_norm_trigrams_unique) .intersection (набор (df_sar.sar_details_sent_norm_trigrams_unique)) TypeError: unhashable тип: 'set'

1 Ответ

0 голосов
/ 26 июня 2019

set является изменяемым типом данных, поэтому небезопасно вычислять для него хеш для использования в качестве ключа в структуре данных хеш-таблицы (например, dict, set), потому что хеш может измениться, если структура данных будет изменена, что нарушит хэш-таблицу инварианта. Вместо этого вы можете использовать frozenset, который является неизменным и может использоваться в качестве ключей в хеш-таблице.

...