#python #pandas #data-cleaning
#python #pandas #очистка данных
Вопрос:
import pandas as pd
sr = pd.Series(["`1", "2", "`3", "4", None, None, None])
У меня есть серия объектов (с len>10000), которая очень похожа на приведенную выше. Я хотел бы сохранить nones, но преобразовать числа в целые числа. Я не уверен, как обращаться с числами, которые, по-видимому, закодированы с помощью обратной метки. Каков наилучший способ сделать это?
Ответ №1:
Вот возможное решение:
sr = sr.str.replace('`', '').astype('float').astype('Int32')
Вы не можете преобразовать строку в целое число с нулевым значением. Обходной путь заключается в том, чтобы сначала преобразовать его в значение с плавающей точкой. вот результирующий ряд:
0 1
1 2
2 3
3 4
4 <NA>
5 <NA>
6 <NA>
dtype: Int32
Комментарии:
1. Это работает для моего примера, но в моих реальных данных числа настолько длинные, что преобразование в float создает числа в научной нотации. Обходным путем, чтобы заставить ваш код работать, было изменение глобальной настройки формата pandas
pd.options.display.float_format = '{:.0f}'.format
. В качестве альтернативы вы можете попробовать другой метод, чтобы просто изменить формат локально.