У меня есть два кадра данных.Столбцы: «х», «у», «имя».
Они одинаковы для обоих наборов данных.X и y являются собственными списками.Вот как выглядит один фрейм данных
x ----- y------- name
0 [0.4752243077637221, 0.6520124241756947, 0.468... [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... D 1#0 ξ:3τ:0.1
1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... [0.38764437658969714, 0.5140357108089131, 0.75... D 1#1 ξ:3τ:0.1
2 [0.20785203454036535, 0.1204140394378531, 0.22... [0.8566063230698455, 0.8234990482161559, 0.826... D 2#0 ξ:3τ:0.1
3 [0.4752243077637221, 0.6520124241756947, 0.585... [0.38764437658969714, 0.5140357108089131, 0.62... D 2#1 ξ:3τ:0.1
4 [0.7019329992171317, 0.9106333194078352, 0.786... [0.7054927087841893, 0.8111061879179277, 0.845... D 2#2 ξ:3τ:0.1
Второй фрейм данных может содержать больше или меньше строк, и его имя будет отличаться.Я хочу проверить, какие xy-координаты находятся в обоих информационных кадрах, независимо от строки, и удалить, если это дубликат.
Цель состоит в том, чтобы изобразить симметричную разность алгоритма кластеризации
Я уже пробовал:
difference = pd.concat([all_clusters_a, all_clusters_b]).drop_duplicates(keep=False, inplace=False)
enter code here
Что приводит к: TypeError: unhashable type: 'numpy.ndarray'
и та же ошибка с:
all_clusters_a.iloc[1:4]= all_clusters_b[:3].values
all_clusters_a['a']='a'
all_clusters_a.set_index('a', append=True, inplace=True)
all_clusters_b['b']='b'
all_clusters_b.set_index('b', append=True, inplace=True)
mergeda = all_clusters_a.append(all_clusters_b)
mergeda = mergeda.drop_duplicates().sort_index()
idx = pd.IndexSlice
complement_BiA = mergeda.loc[idx[:,'a'],:]
mergedb = all_clusters_b.append(all_clusters_b)
mergedb = mergedb.drop_duplicates().sort_index()
complement_AiB = mergedb.loc[idx[:,'b'],:]
numpy.ndarray, кажется, ненавидит drop_duplicate ()