es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Encontrar palabras comunes en una columna basándose en valores de otra columna.

En un dataframe con una columna llamada source, compuesta por dos listas de palabras diferentes:

source  words   letter_count
1 list1  apple         5
2 list1  pear          4
3 list1  banana        6
4 list2  ford          4
5 list2  chevy         5
6 list2  apple         5
7 list2  banana        6

Estoy tratando de devolver un nuevo dataframe que muestre las palabras duplicadas en list1 y list2:

   words   letter_count
1  apple        5
2  banana       6

Estoy usando python y pandas.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para retornar un nuevo dataframe que muestre palabras duplicadas en list1 y list2, podemos usar la función groupby de pandas para agrupar el dataframe por la columna “words” y luego filtrar los grupos con más de una ocurrencia. Esto se puede lograr con el siguiente código:

    duplicates = df.groupby('words').filter(lambda x: len(x) > 1)
    duplicates = duplicates[duplicates['source'].isin(['list1', 'list2'])]
    duplicates = duplicates[['words', 'letter_count']].drop_duplicates()
    

    La primera línea agrupa el dataframe por la columna “words” y filtra los grupos con más de una ocurrencia utilizando una función lambda dentro del método “filter”.

    La segunda línea filtra el dataframe resultante para incluir solo filas con “source” igual a “list1” o “list2”.

    Finalmente, la tercera línea selecciona solo las columnas “words” y “letter_count” y elimina cualquier duplicado, resultando en el resultado deseado:

       words   letter_count
    1  apple        5
    7  banana       6
    

    Mencionar que solo obtenemos “apple” y “banana” como duplicados porque esas son las únicas palabras que aparecen en ambas listas de origen.

Comments are closed.