У меня есть категориальная серия.
В данный момент я сопоставляю строку, используя следующий код.
import pandas as pd
import numpy as np
test = np.random.rand(int(5e6))
test[0] = np.nan
test_cut = pd.cut(test,(-np.inf,0.2,0.4,np.inf))
test_str = test_cut.astype('str')
test_str[test_str.isna()] = 'missing'
Эта операция astype ('str') очень медленная , есть ли способ ускорить это?
Основываясь на ссылке ниже, я понимаю, что применять быстрее, чем astype. Я попробовал следующее.
test_str = test_cut.apply(str)
#AttributeError: 'Categorical' object has no attribute 'apply'
test_str = test_cut.map(str)
# still categorical type
test_str = test_cut.values.astype(str)
# AttributeError: 'Categorical' object has no attribute 'values'
Преобразование серии целых чисел в строки - почему применяется намного быстрее, чем astype?
Мне не важна точная строка представления категорий, только то, что группы сохраняются и прикрываются строками.
В качестве альтернативы, есть ли способ определить новую категорию в категории test_cut «Отсутствует» (или что-то еще) и установить «пропущенные» случаи в «test» для этой категории?
# some code to create 'MISSING' category
test_cat[test_str.isna()] = 'MISSING'