熊猫 - 在分类数据中填写NaN

dee*_*ega 29 python pandas

我正在尝试使用以下代码填充缺失值(NAN)

NAN_SUBSTITUTION_VALUE = 1
g = g.fillna(NAN_SUBSTITUTION_VALUE)
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误

ValueError: fill value must be in categories.
Run Code Online (Sandbox Code Playgroud)

请问任何人请注意这个错误.

blu*_*e10 32

你的问题遗漏了重要的一点g,特别是它有dtype categorical.我假设它是这样的:

g = pd.Series(["A", "B", "C", np.nan], dtype="category")
Run Code Online (Sandbox Code Playgroud)

您遇到的问题是fillna需要一个已作为类别存在的值.例如,g.fillna("A")会工作,但g.fillna("D")失败.要使用新值填充系列,您可以执行以下操作:

g_without_nan = g.cat.add_categories("D").fillna("D")
Run Code Online (Sandbox Code Playgroud)


Gun*_*eng 30

在填写之前添加类别:

g = g.cat.add_categories([1])
g.fillna(1)
Run Code Online (Sandbox Code Playgroud)

  • 只是一个小贴士:当直接应用于数据框时,我必须指定列才能使其工作:`g[cat_column_name] = g[cat_column_name].cat.add_categories([1]) `。如果已经订购了类别,则添加的类别将成为最大的类别。 (2认同)

pac*_*lik 7

创建分类数据后,您只能在类别中插入值.

>>> df
    ID  value
0    0     20
1    1     43
2    2     45

>>> df["cat"] = df["value"].astype("category")
>>> df
    ID  value    cat
0    0     20     20
1    1     43     43
2    2     45     45

>>> df.loc[1, "cat"] = np.nan
>>> df
    ID  value    cat
0    0     20     20
1    1     43    NaN
2    2     45     45

>>> df.fillna(1)
ValueError: fill value must be in categories
>>> df.fillna(43)
    ID  value    cat
0    0     20     20
1    1     43     43
2    2     45     45
Run Code Online (Sandbox Code Playgroud)

  • 你解决问题的方法是很会的。能否请您再添加一些文字,我觉得很难跟上 (2认同)