'TypeError: объекты' Series 'изменяемы, поэтому они не могут быть хешированы'

У меня следующая ошибка

TypeError: 'Series' objects are mutable, thus they cannot be hashed

при попытке построить график с помощью pymnet:

--> 519 self.add_layer(link[i],int(math.floor(i/2))) #just d/2 would work, but ugly

Раньше у меня этого не было. Ниже представлен образец данных:

  A                     B                   Score      Value    
0   user1               test1                    6.6        A
1   user1               user241                  3.2        AA
2   user241             test1                    4.8        B
3   user12              test4                    3.1        C
4   user1               user23                   2.9        A

Для создания сети я использую pymnet:

from pymnet import *
import matplotlib.pyplot as plt

mnet = MultilayerNetwork(aspects=1)
for index in df.index:
      mnet[df.loc[index, 'A'], df.loc[index, 'B'],'friendship','friendship'] = 1 # this is causing the error
fig=draw(mnet, show=True, figsize=(25,30))

У меня должно быть что-то вроде этого (это только user1, но это просто для того, чтобы дать вам представление):

'TypeError: объекты' Series 'изменяемы, поэтому они не могут быть хешированы'

Если я сделаю это (но я не хочу этого):

from pymnet import *
import matplotlib.pyplot as plt

mnet = MultilayerNetwork(aspects=1)
for i in df['A']:
    for j in df['B']:
        mnet[i, j,'friendship','friendship'] = 1

fig=draw(mnet, show=True, figsize=(25,30))

Я не получаю ошибок.

Я надеюсь, что вы можете помочь. Спасибо

Вы можете использовать, например, tuple(df.loc[index, 'A']) для преобразования серии в кортеж при вызове?

RufusVS 10.04.2021 02:10

Я могу использовать, но результат отличается от ожидаемого. Он предоставляет список / серию, а не отдельные узлы :(

Math 10.04.2021 02:28

Попробуйте добавить print(type(df.loc[index, 'A']), type(df.loc[index, 'B'])) перед mnet[] в петле. Они все <class 'str'> <class 'str'>?

Ynjxsjmh 10.04.2021 03:41

он говорит: <class 'pandas.core.series.Series'> <class 'pandas.core.series.Series'>

Math 10.04.2021 04:08

@Math Этого не происходит в ваших данных примера. Не могли бы вы выложить вывод print(df.loc[index, 'A']) print(df.loc[index, 'B'])? Я также добавил другое решение в другой ваш пост. Можешь попробовать?

Ynjxsjmh 10.04.2021 04:23
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
5
25
0

Другие вопросы по теме