Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pandas convert data type from object to float

Tags:

I read some weather data from a .csv file as a dataframe named "weather". The problem is that the data type of one of the columns is object. This is weird, as it indicates temperature. How do I change it to having a float data type? I tried to_numeric, but it can't parse it.

weather.info() weather.head()  <class 'pandas.core.frame.DataFrame'> DatetimeIndex: 304 entries, 2017-01-01 to 2017-10-31 Data columns (total 2 columns): Temp    304 non-null object Rain    304 non-null float64 dtypes: float64(1), object(1) memory usage: 17.1+ KB             Temp     Rain Date         2017-01-01  12.4    0.0 2017-02-01  11      0.6 2017-03-01  10.4    0.6 2017-04-01  10.9    0.2 2017-05-01  13.2    0.0 
like image 479
Almog Woldenberg Avatar asked Jan 04 '18 12:01

Almog Woldenberg


1 Answers

  • You can use pandas.Series.astype
  • You can do something like this :

    weather["Temp"] = weather.Temp.astype(float) 
  • You can also use pd.to_numeric that will convert the column from object to float

  • For details on how to use it checkout this link :http://pandas.pydata.org/pandas-docs/version/0.20/generated/pandas.to_numeric.html
  • Example :

    s = pd.Series(['apple', '1.0', '2', -3]) print(pd.to_numeric(s, errors='ignore')) print("=========================") print(pd.to_numeric(s, errors='coerce')) 
  • Output:

    0    apple 1      1.0 2        2 3       -3 ========================= dtype: object 0    NaN 1    1.0 2    2.0 3   -3.0 dtype: float64 
  • In your case you can do something like this:

    weather["Temp"] = pd.to_numeric(weather.Temp, errors='coerce') 
  • Other option is to use convert_objects
  • Example is as follows

    >> pd.Series([1,2,3,4,'.']).convert_objects(convert_numeric=True)  0     1 1     2 2     3 3     4 4   NaN dtype: float64 
  • You can use this as follows:

    weather["Temp"] = weather.Temp.convert_objects(convert_numeric=True) 
  • I have showed you examples because if any of your column won't have a number then it will be converted to NaN... so be careful while using it.
like image 147
Jai Avatar answered Sep 25 '22 10:09

Jai