创建一个跨列标签编码器的字典

Creating a dictionary of a cross-column label encoder

我已使用 sklearnLabelEncoder 生成两列组合的唯一编码:

import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder

df = pd.read_csv("data.csv", sep=",")
df
#    A    B    
# 0  1  Yes 
# 1  2   No 
# 2  3  Yes 
# 3  4  Yes

如下:

df['AB'] = df.apply(lambda row: hash((row['A'], row['B'])), axis=1)
le = LabelEncoder()
df['C'] = le.fit_transform(df['AB'])

    A   B   C
0   1   Yes 1
1   2   No  6
2   3   Yes 3
3   4   Yes 4

如何为(原始列和 类)和标签编码器 类 生成 keysvalues 的字典?我可以对 AB 中的哈希值执行此操作:

values=le.transform(le.classes_)
keys=le.classes_
dic=dict(zip(keys,values))

我在这里缺少的是 keysABhash 函数生成如下内容:

{(1, Yes): 0, (2, No): 6 ,...}

一种选择是通过A和B设置索引,然后调用to_dict:

out = df.set_index(['A','B'])['C'].to_dict()

输出:

{(1, 'Yes'): 3, (2, 'No'): 1, (3, 'Yes'): 0, (4, 'Yes'): 2}