【发布时间】:2016-10-16 19:14:52
【问题描述】:
我有两个数据框。两者都有相同的列集,但有些列是分类类型的(基于实际包含的值)。为了将它们结合起来,我用两个值的并集刷新了分类列的分类类型。
def appendDFsWithCat(df1, df2):
columns = df1.select_dtypes(include=['category']).columns
for c in columns:
catValues1 = list(df1[c].cat.categories)
catValues2 = list(df2[c].cat.categories)
catValues = list(set(catValues1 + catValues2))
df1[c] = df1[c].cat.set_categories(catValues)
df2[c] = df2[c].cat.set_categories(catValues)
return df1.append(df2, ignore_index=True).reset_index(drop=True)
一切正常,但我想了解为什么在执行此代码时会引发 SettingWithCopyWarning:
df1[c] = df1[c].cat.set_categories(catValues)
Utility.py:149: SettingWithCopyWarning:
除了使用过的,我发现没有其他可能刷新类别数据。
【问题讨论】:
-
你应该包括
df1和df2的例子
标签: python pandas dataframe categorical-data chained-assignment