我有一个空的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')
型
1条答案
按热度按时间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)
。