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.

¿Hay alguna manera de pasar una variable de tipo string en .loc/.iloc de python?

Estoy intentando usar loc para obtener un subconjunto de filas en un dataframe según una condición, pero quiero usar la entrada del usuario para obtener cuál es esta condición y luego alimentarla en la instrucción loc para crear el subconjunto de filas.

He intentado muchas formas, pero no creo que loc acepte su condición como una cadena en este formato, ¿hay alguna manera de solucionar esto?

Vea el intento a continuación:

col_one = input("Por favor ingrese la condición que desea establecer. Ej. State == "New York":)
user_input_test.append(col_one)
one_condition_input = self.df.loc[self.df[user_input_test],:]

También intenté usar slice pero no tuve suerte:

col_one = input("Por favor ingrese la condición que desea establecer. Ej. State == "New York":)
period = slice(col_one)
self.one_condition_input = self.df.loc[period,:]

Y traté de usar format, tomando dos entradas de usuario, una con el nombre de la columna y otra con la condición, pero nuevamente no tuve suerte:

col_one = input("Por favor ingrese la columna que desea establecer. Ej. State":)
col_two = input("Por favor ingrese la condición que desea establecer. Ej. == "New York":)
one_condition_input = self.df.loc[self.df["{}".format(col_one)]"{}".format(col_two),:]

Quiero poder tomar la entrada del usuario de toda la condición y pegarla así:

col_one = input("Por favor ingrese la condición que desea establecer. Ej. State == "New York":)
self.one_condition_input = self.df.loc[df.col_one,:]

Pero obviamente aquí col_one no es un atributo de df, por lo que eso no funciona.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Una forma de utilizar la entrada de usuario para establecer la condición de un subconjunto de filas usando loc es usando formato de cadena para crear una cadena que represente la condición completa, y luego pasar esa cadena a loc. Por ejemplo:

    condición = input("Por favor, ingrese la condición que desea establecer. Ejemplo: 'State' == 'New York': ")
    subconjunto = df.loc[df.eval(condición), :]
    

    En este ejemplo, el usuario ingresa la condición completa incluyendo el nombre de columna, operador de comparación y valor, y se utiliza el método eval para evaluar la cadena como una condición en el marco de datos. La serie booleana resultante se utiliza para subconjuntar el marco de datos con loc.

    Tenga en cuenta el uso de comillas alrededor del nombre de columna y el valor en el prompt de entrada y la condición del ejemplo. Esto es necesario para asegurar que la cadena resultante esté formateada correctamente con comillas alrededor de esos valores.

    Este método permite una entrada de usuario flexible de condiciones, pero también lleva algunos riesgos, ya que eval puede ejecutar código arbitrario. Se recomienda validar la entrada de usuario antes de usarla de esta manera para evitar posibles vulnerabilidades de seguridad.

Comments are closed.