Изменить значение столбца, если значение другого столбца равно одному из значений в списке - PullRequest
0 голосов
/ 26 октября 2018

У меня есть набор данных с несколькими столбцами.Но для этого вопроса важны только два из них.Столбец Body и столбец Valid, первый - это комментарий в твиттере, а второй - вывод алгоритма ML, который определяет, действителен он или нет для проекта, над которым я работаю.

Проблемаявляется то, что у меня есть список твитов из столбца тела, которые были предсказаны неправильно.Что я хочу сделать, это изменить это значение в столбце Действительный, если столбец тела совпадает с любым из значений внутри false_one (который является списком).

Таким образом, принимая во внимание, что false_one является списком и что raw_dataмой фрейм данных.

Я пробовал это:

raw_data = pd.DataFrame(
{
   "SYS-ID":[1,2,3,4,5,6,7,8],
    "BODY":["LOL1","LOL","lol","a","b","C","hey","ho"],
    "VALID":[True,True,True,True,True,True,True,True]
})
wrong_one = ["LOL1,LOL"]

raw_data[raw_data['BODY'].isin(wrong_one), 'Valid'] = False

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

1 Ответ

0 голосов
/ 26 октября 2018

Есть пара ошибок:

  • wrong_one - это список из одной строки, вам нужен список из нескольких строк.
  • pd.DataFrame.loc, not pd.DataFrame.__getitem__ (для которого raw_data[] является синтаксическим сахаром), требуется для настройки индексаторами строк и столбцов.

Так что вы можете использовать:

wrong_one = ['LOL1', 'LOL']

raw_data.loc[raw_data['BODY'].isin(wrong_one), 'VALID'] = False

См. Также Индексирование и выбор данных из официальных документов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...