python - 将类映射到 Pandas 一种热门编码

标签 python pandas dataframe one-hot-encoding multilabel-classification

给出以下序列:

[I、Z、S、I、I、J、N、J、I]

并给出以下 Pandas 数据框:

char  fricative  nasal  lateral  labial  coronal  dorsal  frontal
I             0      0        0       0        0       0        1
J             0      0        1       0        1       0        1
N             0      1        0       0        0       1        0
S             1      0        0       0        1       0        0
Z             1      0        0       0        1       0        0

如何将序列中的每个字符映射到数据框中各自的一个热向量?

最佳答案

用途:

df = df.set_index("char")
res = df.loc[sequence, :].to_numpy().tolist()

输出

[[0, 0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 1, 0, 0], [1, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 1], [0, 0, 1, 0, 1, 0, 1], [0, 1, 0, 0, 0, 1, 0], [0, 0, 1, 0, 1, 0, 1], [0, 0, 0, 0, 0, 0, 1]]

更新

如果您还需要事件类别,您可以使用 bool 掩码直接索引到列,如下所示:

df = df.set_index("char")
res = [df.columns[row.astype(bool)].tolist() for row in df.loc[sequence, :].to_numpy()]
print(res)

输出

[['frontal'], ['fricative', 'coronal'], ['fricative', 'coronal'], ['frontal'], ['frontal'], ['lateral', 'coronal', 'frontal'], ['nasal', 'dorsal'], ['lateral', 'coronal', 'frontal'], ['frontal']]

关于python - 将类映射到 Pandas 一种热门编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69822337/

相关文章:

python - 如何使用 appengine 从非 gmail 帐户发送电子邮件

python - df [‘’ ] 和 df[ [‘’ ]] 有什么区别

python - 在 Python Pandas 中创建一个新列并按每个组将值分配给第一行

python - 如何使用多索引过滤器为列分配值?

python - 如何仅对 Pandas 数据框中的选定列进行排序

python - 比大量 IF 语句更好的选择?数值表

python - 如何在django中生成临时文件然后销毁

python - 我可以使用 lambda、map、apply 或 applymap 来填充数据框吗?

python - 获取正值之和与负值之和

python - Pandas 数据框,按最后一列的最后一列拆分数据,但保留其他列