我具有以下布尔列的数据集
date hr energy
0 5-Feb-18 False False
1 29-Jan-18 False False
2 6-Dec-17 True False
3 16-Nov-17 False False
4 14-Nov-17 True True
5 25-Oct-17 False False
6 24-Oct-17 False False
7 5-Oct-17 False False
8 3-Oct-17 False False
9 26-Sep-17 False False
10 13-Sep-17 True False
11 7-Sep-17 False False
12 31-Aug-17 False False
我想将每个布尔列乘以1以将其转换为虚拟
我尝试过:
df = df.iloc[:, 1:]
for col in df:
col = col*1
但是列仍为布尔值,为什么?
答案 0 :(得分:3)
只需使用
df.iloc[:,1:]=df.iloc[:,1:].astype(int)
df
Out[477]:
date hr energy
0 5-Feb-18 0 0
1 29-Jan-18 0 0
2 6-Dec-17 1 0
3 16-Nov-17 0 0
4 14-Nov-17 1 1
5 25-Oct-17 0 0
6 24-Oct-17 0 0
7 5-Oct-17 0 0
8 3-Oct-17 0 0
9 26-Sep-17 0 0
10 13-Sep-17 1 0
11 7-Sep-17 0 0
12 31-Aug-17 0 0
答案 1 :(得分:1)
对于将来非True或False的情况,如果要将类别转换为数字,可以始终使用replace函数。
df.iloc[:,1:]=df.iloc[:,1:].replace({True:1,False:0})