2
データフレームにa、b、cの3種類の値を持つ列があります。私はすべてのaの値を1に、b、cを0にして、すべてを1つの列に入れたい(これは1つのホットエンコーディングではない)。どうすればいい? if/elseでforループを実行しようとしましたが、うまくいきませんでした。バイナリ複数の値を持つカテゴリ変数を符号化する
データフレームにa、b、cの3種類の値を持つ列があります。私はすべてのaの値を1に、b、cを0にして、すべてを1つの列に入れたい(これは1つのホットエンコーディングではない)。どうすればいい? if/elseでforループを実行しようとしましたが、うまくいきませんでした。バイナリ複数の値を持つカテゴリ変数を符号化する
ブール値系列を1
と0
に変換します。データフレームもう少し早くdf
np.random.seed([3,1415])
df = pd.DataFrame(dict(A=np.random.choice(list('abc'), size=10)))
print(df)
A
0 a
1 c
2 c
3 c
4 c
5 b
6 b
7 c
8 a
9 c
その後
df.assign(B=df.A.eq('a').astype(int))
A B
0 a 1
1 c 0
2 c 0
3 c 0
4 c 0
5 b 0
6 b 0
7 c 0
8 a 1
9 c 0
かを考えてみましょう
df.assign(B=(df.A.values == 'a').astype(int))
A B
0 a 1
1 c 0
2 c 0
3 c 0
4 c 0
5 b 0
6 b 0
7 c 0
8 a 1
9 c 0
タイミング
%timeit df.assign(B=df.A.eq('a').astype(int))
1000 loops, best of 3: 550 µs per loop
%timeit df.assign(B=(df.A.values == 'a').astype(int))
1000 loops, best of 3: 306 µs per loop