Как я могу решить - TypeError: невозможно безопасно преобразовать неэквивалентный float64 в int64? - PullRequest
2 голосов
/ 14 июля 2020

Я пытаюсь преобразовать несколько столбцов с плавающей запятой в int в DF, но получаю ошибку выше. Я пробовал как преобразовать его, так и заполнить до 0 (чего я предпочитаю не делать, так как в моем наборе данных требуется NA).

Что я делаю не так? Я пробовал оба:

orginalData[NumericColumns] = orginalData[NumericColumns].astype('Int64')
#orginalData[NumericColumns] = orginalData[NumericColumns].fillna(0).astype('Int64')

, но это продолжает приводить к той же ошибке

TypeError: cannot safely cast non-equivalent float64 to int64

Что я могу сделать, чтобы преобразовать столбцы?

Ответы [ 2 ]

1 голос
/ 14 июля 2020
import numpy as np
orginalData[NumericColumns] = orginalData[NumericColumns].fillna(0).astype(np.int64, errors='ignore')

Для NaN вам нужно заменить NaN на 0, затем выполнить приведение типа

0 голосов
/ 14 июля 2020

Массив должен содержать только целые числа, чтобы безопасно преобразовать float в int dtype. Если вы настаиваете, вы можете попробовать следующее:

orginalData[NumericColumns] = orginalData[NumericColumns].astype(int, errors='ignore')

В соответствии с вашей версией pandas вы можете безопасно преобразовать сразу несколько столбцов. Для этого не нужно использовать заявку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...