user3447653
user3447653

Reputation: 4148

Convert floats to ints in pandas dataframe

I have a pandas dataframe with a column ‘distance’ and it is of datatype ‘float64’.

Distance
14.827379
0.754254
0.2284546
1.833768

I want to convert these numbers to whole numbers (14,0,0,1). I tried with this but I get the error “ValueError: Cannot convert NA to integer”.

df['distance(kmint)'] = result['Distance'].astype('int')

Any help would be appreciated!!

Upvotes: 0

Views: 4440

Answers (2)

zglin
zglin

Reputation: 2919

An alternative approach would be to convert the NaN values as part of your data import and cleaning processes. The more generalized solution could involve specifying the values that are NaN in the read_table command by setting the na_values flag. What you want to make sure of is that there isn't some malfored data like 1.5km in one of your fields that getting picked up as a NaN value.

pandas.read_table(..., na_values=None, keep_default_na=True, na_filter=True, ....)

Subsequently, once the dataframe is populated and the NaN values are identified properly, you can use the fillna method to substitute in zeros or the values that you identified as your distances. Finally, it would be best to probably use notnull versus isfinite to convert the over to integers.

Upvotes: 0

user3447653
user3447653

Reputation: 4148

I filtered out the NaN's from the dataframe using this:

result = result[np.isfinite(result['distance(km)'])]

Then, I was able to convert from float to int.

Upvotes: 1

Related Questions