Ao escrever o código seguinte eu criar uma trama de dados
data = [['A', 'B','D'], ['A','D'], ['F', 'G','C','B','A']]
df = pd.DataFrame(data)
df
Meu objetivo é remover os valores da trama de dados que não estão na lista abaixo.
list_items = ['A','B','C']
Minha saída esperada é o título
Eu tentei atravessar os valores em loops e verificar um por um, mas vamos dizer que a trama de dados é muito grande em tamanho (9108, 1616) ea lista tem mais de 130 itens que precisam ser verificados. Nesse caso, ele está levando muito tempo para executar o código. Por favor, sugerem a forma mais eficiente para alcançar o resultado esperado.
Eu não acho que fazê-lo em pandas
é um bom ideias como colunas não importa aqui. É mais fácil fazê-lo com listas, que você pode converter para uma trama de dados de pandas no final, se você realmente precisa dele.
# convert df to list of lists
data = df.values.tolist()
# filter each element of the list to contain only list_items values
data_filtered = [ [el for el in l if el in list_items] for l in data]
# convert back to dataframe
df_filtered = pd.DataFrame(data_filtered)
print(df_filtered)
# 0 1 2
#0 A B None
#1 A None None
#2 C B A