¿Cómo eliminar a ciertos valores de una trama de datos pandas, que no están en una lista?

Usman Syed:

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

introducir descripción de la imagen aquí

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

introducir descripción de la imagen aquí

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.

fmarm:

No pienso hacerlo en pandases 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

Supongo que te gusta

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