У меня есть 2 кадра данных ниже. Моя цель - проверить, находятся ли значения столбца df ['A'] в нескольких столбцах второго кадра данных df2 ['B'] или df2 ['C'], и вернуть true или false, если значение присутствует , Столбец test - это мой выходной столбец.
df
A test
q True
w False
e True
df2
B C
q r
g r
g e
Мой текущий код ниже работает, однако он работает очень медленно с сотнями и тысячами строк. Я использую метод list
в этом случае ниже, чтобы преобразовать 2 столбца df2 в список и проверить, есть ли строки в этом списке. Однако мне нужно что-то гораздо быстрее, чем это.
listb = df2['B'].to_list()
listc = df2['C'].to_list()
df['test'] = df['A'].apply(lambda x: 'True' if x in (listb or listc) else 'False')
Я пытался использовать метод .isin()
, но, похоже, не могу заставить его работать с несколькими столбцами для поиска нескольких столбцов в отдельных наборах данных. Этот код запускает, однако, возвращает все False, что неверно.
df['test'] = df['A'].isin(df2[['B','C']]).any(axis = 1)