Как преобразовать varchar в int / float в pandas - PullRequest
1 голос
/ 18 июня 2020

Мои данные взяты из таблицы mysql.

id,revenue,cost,state - это varchar столбцы.

  • Мне нужно сделать get_dummies (одна горячая кодировка) для моей категориальной переменной, которая является только состоянием

  • , если ее чтение напрямую из csv (pd.read_csv) Я получаю типы id,revenue,cost как int / float и state как объект

Мой вопрос в том, как преобразовать объект в int64 / float, если его число c и объект для переменной категории

  • Существует вероятность появления символа strange like?, - в выручке, но я хочу, чтобы в этом столбце было число c

Что я сделал

  • Чтобы исправить это прямо сейчас, измените varchar на int в базе данных напрямую, и проблема исправлена ​​

Но мне нужно делать в pandas

df.apply(pd.to_numeric, errors='coerce').fillna(df) по-прежнему мои столбцы int / float, такие как id,revenue,cost, не меняют dtype

1 Ответ

0 голосов
/ 18 июня 2020

Я думаю, что сначала необходимо проверить dtypes после pd.read_csv:

print (df.dtypes)

Затем преобразование столбцов в numeri c, но невозможно заменить отсутствующие значения на исходные, потому что получаются смешанные значения - numeri c со строками:

cols = ['id','revenue','cost']
df[cols] = df[cols].apply(pd.to_numeric, errors='coerce')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...