首页 > 解决方案 > 在python中用相同的整数在不同的列中编码相同的值

问题描述

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

我需要对这些数据进行编码,以便 TRUE/FALSE/null 值在每一列中使用相同的整数进行编码。

输入:

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

我该怎么做呢?

标签: pythonpandasencodingscikit-learn

解决方案


为我工作创建一列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

另一个想法是使用DataFrame.replacewith 'True'instead 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

推荐阅读