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.

Tomando un subconjunto de filas de un conjunto de datos

‘hypothesis’ es una columna en el crop_dataset que es de tipo

searchfor = [‘she’, ‘he’,’his’,’her’,’him’,’boys’,’woman’,’Woman’,’girl’,’men’,’man’,’female’,’girls’]

Enfoque de dataframe

df_temp = datasets.Dataset.to_pandas(crop_dataset)

rows_where_found = df_temp.filter(lambda example: searchfor in example[‘hypothesis’])

retorna vacío

¿Cómo elijo las filas donde aparezca alguna de estas palabras y creo un subconjunto?

Ejemplo de datos:

print(crop_dataset[‘hypothesis’][0:3])

[‘Una persona está entrenando a su caballo para una competencia.’, ‘Una persona está en un restaurante, ordenando una tortilla.’, ‘Una persona está al aire libre, montando a caballo.’]

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para seleccionar las filas en las que aparezca alguna de las palabras en searchfor y crear un subconjunto, puedes utilizar el método apply en el dataframe de pandas para aplicar una función lambda a cada fila. Esta función lambda debe comprobar si alguna de las palabras en searchfor aparece en la columna hypothesis de esa fila. Luego, puedes filtrar el dataframe para seleccionar solo las filas en las que la función lambda devuelva True.

    Aquí tienes un ejemplo de código para lograr esto:

    import pandas as pd
    from datasets import Dataset
    
    crop_dataset = Dataset.load_from_disk('ruta/a/crop_dataset')
    searchfor = ['she', 'he', 'his', 'her', 'him', 'boys', 'woman', 'Woman', 'girl', 'men', 'man', 'female', 'girls']
    
    # convierte el dataset en un dataframe de pandas
    df_temp = crop_dataset.to_pandas()
    
    # define la función lambda para verificar la presencia de términos de búsqueda en la columna 'hypothesis'
    def has_search_terms(example):
        hypothesis = example['hypothesis']
        return any(term in hypothesis for term in searchfor)
    
    # aplica la función lambda a cada fila
    mask = df_temp.apply(has_search_terms, axis=1)
    
    # crea un subconjunto del dataframe solo con las filas en las que la función lambda devuelve True
    subset_df = df_temp[mask]
    

    En este ejemplo, el dataframe resultante subset_df contendrá solo las filas en las que aparezca alguna de las palabras en searchfor en la columna hypothesis.

Comments are closed.