我可以为独热编码特征添加多层索引吗?
我正在处理一个关于蘑菇特征的数据集,几乎所有的特征我都用pandas转成了二进制格式,但有一些是用名义编码的。我在想,能不能把原来的列作为第二个索引,这样看起来会像这样:
帽子形状:
Bell Conical Flat
1 0 0
而不是:
Cap Shape_Bell Cap Shape_Conical Cap Shape_Flat
1 0 0
这是我用来进行虚拟编码的代码,供参考。
mode = df['Stalk Root'].mode() #most common amswer is b
df = df.replace('?', 'b') #replace all question marks with most common value
df['Ring Number'] = df['Ring Number'].replace({'n': 0, 'o': 1, 't': 2}).astype(int)
df['Gill Spacing'] = df['Gill Spacing'].replace({'c': 0, 'w': 1, 'd': 2}).astype(int)
df = pd.get_dummies(df)
df.drop(labels = ['Poisonous_e', 'Bruises_f', 'Gill Size_n', 'Stalk Shape_t', 'Veil Type_p'], axis = 1, inplace = True)
df.rename(columns={'Poisonous_p': 'Poisonous', 'Bruises_t': 'Bruises'}, inplace = True)
我还没尝试太多,因为之前找到的资源对我来说都不太明白。我查过pd.Multilevel.index,但.from_frame这个方法是针对数据框的,没能满足我的需求。我明白可能每个类别需要相同的属性索引,但这对我来说行不通,因为“气味”和“帽子颜色”肯定没有相同的属性选项。
1 个回答
1
你可以把你的列名用 _
这个符号分开,然后使用 MultiIndex.from_tuples
来创建一个新的多级索引:
df.columns = pd.MultiIndex.from_tuples(col.split('_') for col in df.columns)
输出结果:
Cap Shape
Bell Conical Flat
0 1 0 0