Pandas 多列标签编码:打印映射

Pandas 多列标签编码:打印映射,pandas,encoding,label,multilabel-classification,Pandas,Encoding,Label,Multilabel Classification,以下代码可用于将字符串转换为分类标签: import pandas as pd from sklearn.preprocessing import LabelEncoder df = pd.DataFrame([['A','B','C','D','E','F','G','I','K','H'], ['A','E','H','F','G','I','K','','',''], ['A','C','I','F','H','

以下代码可用于将字符串转换为分类标签:

import pandas as pd
from sklearn.preprocessing import LabelEncoder

df = pd.DataFrame([['A','B','C','D','E','F','G','I','K','H'],
                   ['A','E','H','F','G','I','K','','',''],
                   ['A','C','I','F','H','G','','','','']], 
                  columns=['A1', 'A2', 'A3','A4', 'A5', 'A6', 'A7', 'A8', 'A9', 'A10'])

pd.DataFrame(columns=df.columns, data=LabelEncoder().fit_transform(df.values.flatten()).reshape(df.shape))

    A1  A2  A3  A4  A5  A6  A7  A8  A9  A10
0   1   2   3   4   5   6   7   9   10  8
1   1   5   8   6   7   9   10  0   0   0
2   1   3   9   6   8   7   0   0   0   0
问题:

如何查询映射(它们似乎按字母顺序排序)

例如,一份清单,如:

A: 1
B: 2
C: 3
...
I: 9
K: 10

谢谢大家!

是的,如果单独定义
LabelEncoder
并稍后查询其
classes
属性,则有可能

le = LabelEncoder()
data = le.fit_transform(df.values.flatten())

dict(zip(le.classes_[1:], np.arange(1, len(le.classes_))))
{'A': 1,
 'B': 2,
 'C': 3,
 'D': 4,
 'E': 5,
 'F': 6,
 'G': 7,
 'H': 8,
 'I': 9,
 'K': 10}
按编码顺序存储类列表

le.classes_
array(['', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'K'], dtype=object)
因此,您可以安全地假设第一个元素被编码为1,依此类推


要进行反向编码,请使用
le.inverse\u transform

我认为
标签编码器中有
transform

le=LabelEncoder()
le.fit(df.values.flatten())
dict(zip(df.values.flatten(),le.transform(df.values.flatten()) ))
Out[137]: 
{'': 0,
 'A': 1,
 'B': 2,
 'C': 3,
 'D': 4,
 'E': 5,
 'F': 6,
 'G': 7,
 'H': 8,
 'I': 9,
 'K': 10}