Como remover certos valores de uma trama de dados de pandas, que não estão em uma lista?

Usman Syed:

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

digite descrição da imagem aqui

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

digite descrição da imagem aqui

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.

fmarm:

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

Acho que você gosta

Origin http://10.200.1.11:23101/article/api/json?id=408609&siteId=1
Recomendado
Clasificación