Solução escalável para str.contains com lista de strings em pandas

Estou analisando um dataframe de pandasdf1 contendo linhas de objetos de sequência. Eu tenho uma lista de referência de palavras-chave e preciso excluir todas as linhas dedf1 contendo qualquer palavra da lista de referência.

Atualmente, eu faço assim:

reference_list: ["words", "to", "remove"]
df1 = df1[~df1[0].str.contains(r"words")]
df1 = df1[~df1[0].str.contains(r"to")]
df1 = df1[~df1[0].str.contains(r"remove")]

O que não é escalável para milhares de palavras. No entanto, quando eu faço:

df1 = df1[~df1[0].str.contains(reference_word for reference_word in reference_list)]

Eu produzo o erroo primeiro argumento deve ser sequência ou padrão compilado.

Segueesta solução, tentei:

reference_list: "words|to|remove" 
df1 = df1[~df1[0].str.contains(reference_list)]

O que não gera uma exceção, mas não analisa todas as palavras eather.

Como usar efetivamente str.contains com uma lista de palavras?

questionAnswers(1)

yourAnswerToTheQuestion