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