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
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
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')
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)
NaN
... so be careful while using it.If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With