У меня следующая ошибка
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, но это просто для того, чтобы дать вам представление):
Если я сделаю это (но я не хочу этого):
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))
Я не получаю ошибок.
Я надеюсь, что вы можете помочь. Спасибо
Я могу использовать, но результат отличается от ожидаемого. Он предоставляет список / серию, а не отдельные узлы :(
Попробуйте добавить print(type(df.loc[index, 'A']), type(df.loc[index, 'B'])) перед mnet[] в петле. Они все <class 'str'> <class 'str'>?
он говорит: <class 'pandas.core.series.Series'> <class 'pandas.core.series.Series'>
@Math Этого не происходит в ваших данных примера. Не могли бы вы выложить вывод print(df.loc[index, 'A']) print(df.loc[index, 'B'])? Я также добавил другое решение в другой ваш пост. Можешь попробовать?






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