Man81
Man81

Reputation: 43

Python How to convert Series type : object to int

I'm trying to convert a Series object to integer. But I'm having trouble doing it. Every time I try something I have a new Error.

  1. I tried to convert using pd.to_numeric, error while parsing string None
  2. Then I tried to replace None values with NaN : problem replacing

#1.1)

pd.to_numeric(df['Var1'], downcast = 'integer')

ValueError: Unable to parse string "None" at position 44816

#1.2)

df.astype({'Var1':'int64'}).dtypes

TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'

#2)

df['Var1'].astype(str).astype(int)

ValueError: invalid literal for int() with base 10: 'None'

actual result: dtype: object
expected result: dtype: int64

Upvotes: 0

Views: 3456

Answers (2)

noobtalgic
noobtalgic

Reputation: 60

Try

import numpy as np
df = df.fillna(np.nan)

Upvotes: 0

michcio1234
michcio1234

Reputation: 1838

You seem to have a string "None" in one (or more) of the cells. Try to first replace it with np.nan and then cast to numeric:

import numpy as np
df = df.replace("None", np.nan).astype({'Var1': float})

Note that in pandas version <0.24 you can't have missing values (NaNs) in an integer column, that's why I suggested casting it to float.

Upvotes: 1

Related Questions