приведение к типу обнуляемого целого типа "Int64" больше не работает - PullRequest
1 голос
/ 22 апреля 2020

Я не могу понять, почему то, что раньше было таким простым, больше не работает. Часто я могу сопоставить столбец dataframe со словарем, и некоторые нулевые значения отображаются, поскольку они не найдены в словарных ключах. Таким образом, результирующий столбец будет с плавающей точкой + ноль. Обычно я конвертирую .astype("Int64") и boob, ненулевые значения теперь являются целыми числами, а не числами с плавающей запятой, при этом все остальное остается нетронутым.

Теперь я сталкиваюсь с проблемами, когда я обрабатываю свои данные, использую преобразования Int64, принятие тесты пройдены, но позже в дальнейшем в развертывании данных конвейера происходит сбой, потому что в этих столбцах находятся поплавки.

Просто чтобы убедиться, что я не сумасшедший, я открываю блокнот jupyter и инициализирую основ c dataframe, сопоставьте его со словарем, для которого некоторые значения dataframe не существуют в словарных ключах, затем преобразуйте как "Int64" ..... и я все еще решаю эту проблему !! В чем дело? Я уверен, что раньше это было так просто ....

df = pd.DataFrame({"keys": [5, 10, 15, 20]})

df["after_mapping"] = df["keys"].map({1: 0, 2: 2, 5: 25, 15: 305})

df["after_mapping"] = df["after_mapping"].astype("Int64")

ValueError: Невозможно преобразовать бесконечные значения (NA или inf) в целое число

1 Ответ

0 голосов
/ 22 апреля 2020

Отлично работает на моей машине:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 2 columns):
 #   Column         Non-Null Count  Dtype
---  ------         --------------  -----
 0   keys           4 non-null      int64
 1   after_mapping  2 non-null      Int64
dtypes: Int64(1), int64(1)
memory usage: 196.0 bytes

Вы уверены, что знаете номер своей версии?

pd.__version__
...