Pythonで同じ整数で異なる列に同じ値を符号化します

Akshay Bharadwaj:

私は、文字列の形式で保存された真/偽の値を持つデータフレームを持っています。いくつかの値は、データフレームにはnullです。

私はこのデータを符号化する必要が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

私はこれをどのように行うのですか?

エズレル:

私が作業するための一つの列を作成します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.replace'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

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=4773&siteId=1