2
我有一个数据框中的列有三种类型的值a,b和c。我希望所有的a值都是1,b和c都是0,所有这些都在一列中(这不是一个热门编码)。我将如何做到这一点?我试着用if/else做一个for循环,但没有奏效。二进制编码一个具有多个值的分类变量
我有一个数据框中的列有三种类型的值a,b和c。我希望所有的a值都是1,b和c都是0,所有这些都在一列中(这不是一个热门编码)。我将如何做到这一点?我试着用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