首页 > 解决方案 > 训练和测试集上的虚拟变量导致不同大小的数据帧输出

问题描述

我正在使用 onehot 对我的数据帧(训练和测试)进行编码pd.get_dummies()。但是,两个数据框都相当大,我注意到它输出不同的列大小。271 vs 290。这是由于某些定性变量在一个数据框中具有值,而在另一个数据框中没有。

当这些变量存在于另一个数据框中时,是否有一个命令可以用来pd.get_dummies确保我得到一个带有 0 的空列?

标签: pythonpandas

解决方案


当您拥有数据框并想将对象转换为虚拟变量时,请在使用前不要拆分它 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)

推荐阅读