Al escribir el código siguiente se crea una trama de datos
data = [['A', 'B','D'], ['A','D'], ['F', 'G','C','B','A']]
df = pd.DataFrame(data)
df
Mi objetivo es eliminar los valores de la trama de datos que no están en la lista de abajo.
list_items = ['A','B','C']
Mi salida esperada es tan bajo
He intentado atravesar los valores en los bucles y comprobar uno por uno, pero digamos que la trama de datos es muy grande en tamaño (9108, 1616) y la lista tiene más de 130 artículos que deben ser verificados. En ese caso se está tomando demasiado tiempo para ejecutar el código. Para sugerir la forma más eficiente para lograr el resultado esperado.
No pienso hacerlo en pandas
es una buena idea que las columnas no importan aquí. Es más fácil hacerlo con las listas, que se puede convertir en una trama de datos pandas al final si realmente lo necesita.
# 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