熊猫在尝试添加类别值时出错"AttributeError: 'DataFrame' object has no attribute 'add_categories'"?



我在处理数据帧时收到一个错误"ValueError:fill value must in categories"。经过研究,我似乎需要为每个属于类别的值添加分类选项,但我得到了以下错误:

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'

我做错了什么?

  • 发生错误的原因是pandas.Series.cat.add_categories是Series方法,而df[['embarked', 'sex', 'pclass']]是DataFrame
  • 使用pd.Categorical
  • 熊猫:分类数据
  • 某些titanic数据集列包含NaNs,这些列不能是类别。
    • 创建类别时使用.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])

相关内容

最新更新