在python中使用相同的整数对不同列中的相同值进行编码

在python中使用相同的整数对不同列中的相同值进行编码,python,pandas,encoding,scikit-learn,Python,Pandas,Encoding,Scikit Learn,我有一个以字符串格式存储真/假值的数据帧。数据框中的某些值为空 我需要对这些数据进行编码,使真/假/空值在每一列中使用相同的整数进行编码 输入: col1 col2 col3 True True False True True True null null True 我正在使用: le = preprocessing.LabelEncoder() df.apply(le.fit_transform) 输出: 2 1 0 2 1 1 1 0 1 但我希望输出为: 2 2 0 2 2 2 1

我有一个以字符串格式存储真/假值的数据帧。数据框中的某些值为空

我需要对这些数据进行编码,使真/假/空值在每一列中使用相同的整数进行编码

输入:

col1 col2 col3
True True False
True True True
null null True
我正在使用:

le = preprocessing.LabelEncoder()
df.apply(le.fit_transform)
输出:

2 1 0
2 1 1
1 0 1
但我希望输出为:

2 2 0
2 2 2
1 1 2

如何执行此操作?

为我的工作创建一列
DataFrame

df = df.stack(dropna=False).to_frame().apply(le.fit_transform)[0].unstack()
print (df)
   col1  col2  col3
0     1     1     0
1     1     1     1
2     2     2     1
另一个想法是使用
'True'
代替
True
,因为:

我有一个以字符串格式存储真/假值的数据帧

如果
null
缺少值:

df = df.replace({'True':2, 'False':1, np.nan:0})
如果
null
是字符串
null

df = df.replace({'True':2, 'False':1, 'null':0})

print (df)
   col1  col2  col3
0     2     2     1
1     2     2     2
2     0     0     2

@jazrael df.replace适用于布尔值,因为有3个可能的值。假设每列可能有100个不同的值。在相同值需要相同整数编码的情况下如何编码?@AkshayBharadwaj-然后使用第一种解决方案。