我正在尝试使用以下代码填充缺失值(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)
创建分类数据后,您只能在类别中插入值.
>>> 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)