В моей версии pandas
параметр categories
недопустим для .astype()
. Чтобы сделать то, что вы хотите, вам нужен экземпляр CategoricalDtype
:
from pandas.api.types import CategoricalDtype
s = pd.Series(['Low', 'Low', 'High', 'Medium', 'Low', 'High', 'Low'])
cat_type = CategoricalDtype(categories=['Low', 'Medium', 'High'], ordered=True)
s = s.astype(cat_type)
print(s>'Low')
0 False
1 False
2 True
3 True
4 False
5 True
6 False
dtype: bool
Подробнее об этом можно узнать в документах .
. это, т.е. без явного импорта, использует pd.Categorical()
:
raw_cat = pd.Categorical(
['Low', 'Low', 'High', 'Medium', 'Low', 'High', 'Low'],
categories=['Low', 'Medium', 'High'],
ordered=True
)
s = pd.Series(raw_cat)