对于数组中的所有元素,将布尔值转换为零或一

时间:2018-07-04 04:23:31

标签: pandas loops boolean

我具有以下布尔列的数据集

            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

但是列仍为布尔值,为什么?

2 个答案:

答案 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})