pandas TypeError:无法将一个Categorical与另一个Categorical设置,而没有相同的类别

mwngjboj  于 2023-08-01  发布在  Go
关注(0)|答案(1)|浏览(273)

我有一个空的pd.DataFrame df,其中col1设置为category

df = pd.DataFrame({"col1": []})
df["col1"] = df["col1"].astype("category")

字符串
我还有一个pd.Series,其中一个值集为一个类别

s = pd.Series(["MP1"])
s = s.astype("category")


当我尝试以下操作时

df["col1"] = df["col1"].combine_first(s)


我得到了这个错误

TypeError: Cannot set a Categorical with another, without identical categories

我所尝试的

将pd.Series中的类别添加到空DataFrame中

df["col1"].cat.add_categories(s.cat.categories.to_list())


但它似乎不起作用,我得到了同样的错误,当我输出类别时,它看起来像它没有添加任何东西

[in]-> df["col1"].cat.categories

[out]-> Float64Index([], dtype='float64')

vojdkbi0

vojdkbi01#

我认为.add_categories返回一个新的 Dataframe ,而没有修改原始的 Dataframe ,所以你需要将结果分配给一个新的 Dataframe 。
我运行了df_new = df["col1"].cat.add_categories(s.cat.categories.to_list())df_new.dtypes告诉我它包含CategoricalDtype(categories=['MP1'], ordered=False)

相关问题