2 回答
TA贡献1911条经验 获得超7个赞
当您拥有数据框并希望将对象转换为虚拟变量时,请在使用之前不要将其拆分 get_dummies
df = pd.get_dummies(df)
train = df[cond]
test = df.drop(train.index)
修复您的代码
df = pd.get_dummies(pd.concat([train , test]))
train = df[df.index.isin(train.index)]
test = df.drop(train.index)
TA贡献1906条经验 获得超3个赞
如果可能的话,最安全的选择是在使用 之前将列转换为包含所有可能值的分类数据类型get_dummies。如果您的训练数据经常更改(流式传输/经常更新)并且您想要最大的兼容性,这尤其有用:
x_values = ["a", "b", "c", "d", "e"]
x_type = pd.Categorical(values=x_values)
df = pd.DataFrame(dict(x=["a", "b", "c"], y=[1,2,3]))
不知道可能值“d”、“e”的傻瓜:
x_dummies = pd.get_dummies(df.x)
a b c
0 1 0 0
1 0 1 0
2 0 0 1
知道“d”、“e”的虚拟人存在,即使当前数据中没有表示:
df["x"] = df["x"].astype(x_cat)
x_dummies = pd.get_dummies(df.x)
a b c d e
0 1 0 0 0 0
1 0 1 0 0 0
2 0 0 1 0 0
添加回答
举报