我在数据框中有一列有三种类型的值a,b和c。我希望所有的值都是1,b,c为0,所有这些都在一列中(这不是一个热编码)。我该怎么做?我尝试用if / else做一个for循环,但它没有用。
答案 0 :(得分:2)
将布尔系列转换为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