#python #pandas
#python #pandas
Вопрос:
Ранее я получал ошибку «Ошибка значения: значение заполнения должно быть в категориях» при работе с фреймом данных. После исследования, похоже, мне нужно добавить категориальные параметры для каждого значения, которое является категорией, но я получаю приведенную ниже ошибку:
catgoricalValues = ['embarked', 'sex', 'pclass']
df[catgoricalValues] = df[catgoricalValues].astype('category')
df[catgoricalValues] = df[catgoricalValues].add_categories(df[catgoricalValues].unique()) # add options for catgorical values
AttributeError: 'DataFrame' object has no attribute 'add_categories'
Что я делаю не так?
Ответ №1:
- Ошибка возникает из-за того, что
pandas.Series.cat.add_categories
это метод серии, аdf[['embarked', 'sex', 'pclass']]
это DataFrame. - Использовать
pd.Categorical
- pandas: категориальные данные
- Некоторые из
titanic
столбцов dataset содержатNaN
s, которые не могут быть категориями.- Используйте
.dropna()
при создании категорий.
- Используйте
один столбец
df['embarked'] = pd.Categorical(df['embarked'], categories=df['embarked'].dropna().unique())
несколько столбцов
# looping through the columns
for col in ['embarked', 'sex', 'pclass']:
df[col] = pd.Categorical(df[col], categories=df[col].dropna().unique())
# alternatively with .apply
df[['embarked', 'sex', 'pclass']] = df[['embarked', 'sex', 'pclass']].apply(lambda x: pd.Categorical(x, x.dropna().unique(), ordered=True))
# create a sample series
s = pd.Series(["a", "b", "c", "a"], dtype="category")
# add a category
s = s.cat.add_categories([4])
Комментарии:
1. потрясающе! Большое вам спасибо!