我正在研究Allstate data from Kaggle。
我正在遍历分类列以创建虚拟对象,但pd.drop()
并未放弃我的列。我试过了
for i in range(44):
dummies1 = pd.get_dummies(combined[cols_cat[i+71]], prefix=cols_cat[i+72])
combined = pd.concat([combined,dummies1], axis=1)
combined = combined.drop(combined[cols_cat[i+71]], axis=1)
或
for i in range(44):
dummies1 = pd.get_dummies(combined[cols_cat[i+71]], prefix=cols_cat[i+72])
combined = pd.concat([combined,dummies1], axis=1)
combined.drop(combined[cols_cat[i+71]], axis=1, inplace=True)
但是当我检查combined.head()
时,假人的创建正常,但原始列仍然存在。 drop函数总是给我带来麻烦,我觉得在经过多次使用/研究后我仍然无法理解drop函数的inplace
部分。
这里,cols_cat
是我之前创建的列名的数组。
cols_cat = train.iloc[:,1:117].columns
cols_cont = train.iloc[:,117:131].columns
我正在努力为人们创建一个模型数据框,以便更容易回答。在那之前,有人发现我正在犯的任何根本错误吗?
答案 0 :(得分:1)
这样做:
combined = combined.drop(cols_cat[i+71], axis=1)
OR
combined.drop(cols_cat[i+71], axis=1, inplace=True)
根据pandas documentation,axis=1
会从列中删除标签,而axis=0
会从索引中删除标签。