У меня есть набор данных столбца формы:Как улучшить производительность следующего кода в Python
'< 1 year'
'10+ years'
'6 years'
etc
мне нужно был его преобразовать в целое формата, то есть «< 1 год» -> 0, '10 + лет '-> 10, а записи типа «6 лет» -> 6 и т. Д. Есть 500 000 записей. Я написал следующий сценарий для его очистки:
temp = data.X11
for i in range(len(temp)):
if ~is_nan(temp[i]):
if isinstance(temp[i], six.string_types):
b= temp[i].split(" ")
if len(b) == 3 and (b[0])=='<':
temp[i] = 0
elif len(b) == 2:
if b[0] == '10+':
temp[i] = 10
else:
temp[i] = int(b[0])
else:
if isinstance(temp[i], float):
temp[i] = math.floor(temp[i])
if isinstance(temp[i], int):
if temp[i] >= 10:
temp[i] = 10
elif temp[i] < 1 and temp[i] >= 0:
temp[i] = 0
elif temp[i] < 0:
temp[i] = -10
else:
pass
else:
temp[i] = -10
Это работает. Но недостатком является то, что он ужасно медленный (потребовалось несколько часов для завершения). Мой вопрос заключается в том, как улучшить производительность этого кода.
Любой совет или помощь с фрагментом кода были бы оценены.
Благодаря
Спасибо за ваши комментарии @QuentinRoy – user62198
Я попробую. Решение с dict (см. Ниже) также занимает много времени. – user62198