При использовании метода 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
), поэтому я могу выбирать серии в моем фрейме данных в соответствии с их типом.Кто-нибудь знает, что я делаю не так?