Pyspark или Pandas — сравните col1 из DF1 и col2 из DF2 и удалите повторяющиеся слова в col1 на основе col2

#pandas #dataframe #pyspark

#pandas #фрейм данных #pyspark

Вопрос:

Я хочу удалить слова, присутствующие в списке col2 из DF2, из col1 из DF1. DF2 имеет только один список. DF1 содержит несколько списков, и каждый список находится в одной строке.

DF1 введите описание изображения здесь

DF2 введите описание изображения здесь

Вывод / результат DF1 введите описание изображения здесь

В выводе / результате я хочу сохранить повторяющиеся слова DF1 для каждой строки. Я попробовал array_except() , он выдает желаемый результат, но также удаляет дубликаты в каждой строке DF1, например, вместо 2 D в результате получается только 1 D. Любое другое решение?

Очень признателен!

Ответ №1:

Если DF2 содержит только один список, вероятно, это не обязательно должен быть фрейм данных, это может быть просто список. Попробуйте это:

 df1 = pd.DataFrame({'col1': [['A', 'B', 'D', 'D'], ['A', 'G']]})
to_remove = ['A', 'B', 'E']
df1['col3'] = df1['col1'].apply(lambda list_: [val for val in list_ if val not in to_remove])
print(df1)

           col1    col3
0  [A, B, D, D]  [D, D]
1        [A, G]     [G]