Декодирование объектов с обратными ссылками в pandas

#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 . В качестве альтернативы вы можете попробовать другой метод, чтобы просто изменить формат локально.