Series.replace () не меняет dtype в соответствии с заменами - PullRequest
0 голосов

При использовании метода Series.replace() в пандах, если в серии присутствуют не все заменяемые значения, исходный dtype сохраняется в качестве типа данных для этой серии.

Я пытаюсь заменить все строковые значения числовыми значениями в данной серии.Если все строки, которые я хочу заменить, присутствуют в серии, то в результате получается серия с int64 dtype.Однако некоторые строки, перечисленные в параметре to_replace, отсутствуют в series, потому что функция, которую я пишу, предназначена для преобразования других образцов данных, которые могут содержать другие классы в этой конкретной серии;в этом случае новая серия dtype остается как object и не изменяется на int64, как ожидалось.

data['Functional'] = data.Functional.replace(['Typ', 'Min1', 'Min2', 'Mod', 'Maj1', 'Maj2', 'Sev', 'Sal'], [7, 6, 5, 4, 3, 2, 1, 0])

В приведенном выше случае класс 'Саль не присутствует в сериале;таким образом, результатом является ряд, содержащий int чисел в диапазоне от 1 до 7 (исключая 0, который является значением замены для Sal).Если я заменю случайную ячейку в серии на строку 'Sal' и выполню команду, то результатом будет ряд, содержащий numpy.int64 значений.

Я хочу, чтобы серия результатов была указана в виде числаseries (int64), поэтому я могу выбирать серии в моем фрейме данных в соответствии с их типом.Кто-нибудь знает, что я делаю не так?

1 Ответ

0 голосов
/ 07 мая 2019

Используя astype, вы можете определить свой тип dtype:

data['Functional'] = data.Functional.replace(['Typ', 'Min1', 'Min2', 'Mod', 'Maj1', 'Maj2', 'Sev', 'Sal'], [7, 6, 5, 4, 3, 2, 1, 0]).astype(int)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...