У меня есть набор данных pandas плюс серия идентификаторов pandas и вы хотите отфильтровать строки из фрейма данных, соответствующие идентификаторам в серии. Чтобы получить идентификаторы из фрейма данных, мне нужно объединить его первые два столбца. Я пробовал различные вещи для фильтрации, но пока никто не работает. Вот что я пробовал:Фильтрация строк из фрейма данных pandas с использованием конкатенированных строк
1) Я попробовал добавить столбец булевых данных в фрейм данных, будучи истинным, если эта строка соответствует одному из идентификаторов и false в противном случае (надеясь, что после этого можно будет фильтровать, используя новый столбец):
df["isInAcids"] = (df["AcNo"] + df["Sortcode"]) in acids
где
acids
является серия, содержащий идентификаторы.
Однако это дает мне
TypeError: unhashable type
2) Я пытался фильтрации с помощью функции применения:
df[df.apply(lambda x: x["AcNo"] + x["Sortcode"] in acids, axis = 1)]
Это не дает мне ошибку, но длина кадра данных остается неизменным, поэтому он не фильтрует ничего.
3) Я добавил новый столбец, содержащий последовательно соединенные струнные/идентификаторы, а затем попытаться отфильтровать впоследствии (см Filter dataframe rows if value in column is in a set list of values):
df["ACIDS"] = df["AcNo"] + df["Sortcode"]
df[df["ACIDS"].isin(acids)]
Но опять же, dataframe не меняется.
Я надеюсь, что это имеет смысл ...
Любые предложения, где я мог бы быть неправильно? Спасибо, Anne
Не могли бы вы опубликовать небольшой пример того, что ваш '' dataframe' и series' и то, что вы ожидаете, ваши результаты будут выглядеть? – TomAugspurger
Эти операции не находятся на месте, поэтому рамка данных не просто изменится, если вы явно не сообщите об этом (это хорошая вещь **). –
Привет, Энди, спасибо большое, если я добавлю 'df = ...' в третье решение, оно работает. – Anne