Ошибка: TypeError: 'Series' objects are mutable, thus they cannot be hashed
У меня есть такой датасет (это только кусок):
Login Password
0 Jack 12345
1 admin 2323
Также я написал функцию, которая получает на вход какую-то строку и печатает строку из таблицы, в которой в столбце Login лежит полученное значение (если оно там есть):
def check_password(login):
check = info.iloc(info['Login'] == str(login))
print(check)
file = 'users.csv'
info = pd.read_csv(file, delimiter=';', names=['Login', 'Password'])
check_password('Jack')
Но что бы я не делал на строке:
check = info.iloc(info['Login'] == str(login))
получаю такую ошибку:
TypeError: 'Series' objects are mutable, thus they cannot be hashed.
Полазив на англоязычной версии сайта, я нашел решение похожей проблемы. Там описывается, что флаг должен быть таким, чтобы Pandas мог высчитать его хеш. В ответе говорилось использовать int или str значения. Но я не понимаю, где я ошибся, если флаг у меня - str значение.
Ответы (1 шт):
Попробуйте так:
In [164]: name = "Jack"
In [165]: df.query("Login == @name")["Password"]
Out[165]:
0 12345
Name: Password, dtype: int64
чтобы получить результат как скалярное значение - берем пароль для первой совпавшей строки:
In [166]: df.query("Login == @name")["Password"].iat[0]
Out[166]: 12345