My best efforts to convert a column with ‘yes’ ‘no’ values to True, False or 1 , 0 are failing. The column is ‘subscribed’.
JavaScript
x
3
1
df.subscribed.unique() returns
2
array(['no', 'yes'], dtype=object)
3
Tried the following. None of them worked:
JavaScript
1
6
1
df.subscribed = df.subscribed.astype(int)
2
df.subscribed.map(dict(yes=1, no=0))
3
df.replace({'subscribed': {'yes': 1, 'no': 0}})
4
d = {'yes': True, 'no': False}
5
df['subscribed'].map(d)
6
Advertisement
Answer
As EdChum points out you need to assign back to the df.
JavaScript
1
3
1
df = pd.DataFrame({'subscribed':np.random.choice(['yes','no'], 10)})
2
print(df)
3
Input:
JavaScript
1
15
15
1
subscribed
2
0 yes
3
1 yes
4
2 yes
5
3 no
6
4 no
7
5 yes
8
6 no
9
7 no
10
8 no
11
9 yes
12
13
df =df.replace({'subscribed': {'yes': True, 'no': False}})
14
print(df)
15
Output:
JavaScript
1
12
12
1
subscribed
2
0 True
3
1 True
4
2 True
5
3 False
6
4 False
7
5 True
8
6 False
9
7 False
10
8 False
11
9 True
12