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.

¿Cómo puedo separar una frase que contiene valores en columnas con sus valores en python?

Necesito convertir esta cadena en habitaciones y su valor específico con la ayuda de código Python. Intenté con

df1[[‘Habitación principal’, ‘habitación’,’habitación’,’habitación’,’cuarto de estudio’]] = df[‘Area(sq.ft)’].str.split(‘,’,1, expand=True)

pero desafortunadamente dice

ValueError: Las columnas deben tener la misma longitud que la clave

A continuación se muestra la entrada:


0 | Area(sq.ft) 1 | Habitación principal, 181, Habitación, 153.08, Habitación, 143, Habitación, 132, | Cuarto de estudio, 72.75 2 | Habitación principal, 144.83, Habitación, 126.88, Habitación, 142.62

A continuación se muestra la salida:


| Habitación principal | Habitación | Habitación | Habitación | Cuarto de estudio | 181 | 153.08 | 143 | 132 | 72.75 | 144.83 | 126.88 | 142.62 | 0 | 0
Tags:  ,

Answer

  1. Avatar for davy.ai

    Puedes utilizar el siguiente código para convertir la entrada en la salida:

    import pandas as pd
    
    Crear un dataframe a partir de la entrada
    
    df = pd.DataFrame({'Área(pies cuadrados)': ['Dormitorio principal, 181, Habitación, 153.08, Habitación, 143, Habitación, 132, Estudio, 72.75', 
                                       'Dormitorio principal, 144.83, Habitación, 126.88, Habitación, 142.62']})
    
    Divide el dataframe en dos columnas
    
    df1 = df['Área(pies cuadrados)'].str.split(',', expand=True)
    
    Crear un nuevo dataframe con las columnas deseadas
    
    df2 = pd.DataFrame({'Dormitorio principal': df1[1], 
                        'Habitación': df1[3], 
                        'Habitación': df1[5], 
                        'Habitación': df1[7], 
                        'Estudio': df1[9]})
    
    Rellenar las celdas vacías con 0
    
    df2.fillna(0, inplace=True)
    
    Imprimir la salida
    
    print(df2)
    

Comments are closed.