Преобразование логического значения в ноль или единицу для всех элементов массива - PullRequest
0 голосов
/ 04 июля 2018

У меня есть следующие наборы данных логических столбцов

            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 голосов
/ 04 июля 2018

Для будущих случаев, отличных от True или False, если вы хотите преобразовать категориальные в числовые значения, вы всегда можете использовать функцию замены.

    df.iloc[:,1:]=df.iloc[:,1:].replace({True:1,False:0})
0 голосов
/ 04 июля 2018

Просто с помощью

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
...