Search code examples
python-3.xnumpyscikit-learnspydersklearn-pandas

Converting an array of strings containing range of integer values into an array of floats


Click here to see an image that contains a screenshot sample of the data. I have a CSV file with a column for temperature range with values like "20-25" stored as string. I need to convert this to 22.5 as a float. Need this to be done for the entire column of such values, not a single value.I want to know how this can be done in Python as i am very new to it.

Notice in the sample data image that there are NaN values as well in the records


Solution

  • Like said in the reactions split the array using "-" as argument. Second, create a float array of it. Finally, take the average using numpy.

    import numpy as np
    
    temp_input =  ["20-25", "36-40", "10-11", "23-24"]
    
    # split and convert to float
    # [t.split("-") for t in temp_input] is an inline iterator
    tmp = np.array([t.split("-") for t in temp_input], dtype=np.float32)
    
    # average the tmp array
    temp_output = np.average(tmp, axis=1)
    

    And here's a oneliner:

    temp_output = [np.average(np.array(t.split('-'), dtype=np.float32)) for t in temp_input]