我可以为one-hot编码功能添加多级索引吗?

问题描述 投票:0回答:1

我正在研究蘑菇特征的数据集,几乎所有特征都用 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 不适用于我的目的。我知道每个类别可能还需要相同的属性索引,但这对我不起作用,因为“气味”和“帽子颜色”肯定没有相同的属性选项。

python pandas indexing one-hot-encoding
1个回答
0
投票

您可以在

_
上拆分列名称,然后使用
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
© www.soinside.com 2019 - 2024. All rights reserved.