为什么df [0]在连接后不返回第一列,以及如何使用ohe.categories_?

问题描述

dfcars= pd.read_excel('cars.xlsx')
ohe=OneHotEncoder()
temp1= pd.DataFrame(ohe.fit_transform(dfcars[['Car Model']]).toarray())
ohe.categories_
dfcars = pd.concat([dfcars,temp1],axis=1)

dfcars

dfcars.columns

尽管dfcars已与temp串联,但dfcars[0]返回第4列,而dfcars[4] 显示错误

dfcars[0]

为什么会这样?

此外,我到处搜索,但在categories_中找不到OneHotEncoder用法,因此请告知其用途以及正确的语法。

我尝试了此操作,但是开始的列可能由于上述问题而消失了,并且所有值都被NaN填充。

df_drop=dfcars.drop(['Car Model'],axis=1)
df_drop = pd.DataFrame(data= df_drop,columns= ohe.categories_)

df_drop

解决方法

这可能是由于dfcars [0]的语法为df [column_name_string],并且您具有名称为“ 0”的列,但没有名称为“ 4”的列。 您可以在连接之前重命名列:

temp1= pd.DataFrame(ohe.fit_transform(dfcars[['Car Model']]).toarray(),columns=['Category_0','Category_1','Category_2'])
dfcars = pd.concat([dfcars,temp1],axis=1)

对于categories_的{​​{1}}属性,您可以访问sklearn docs