Estoy tratando de escribir como lista de comprensión el siguiente código:

is_weekend = list()
for i in df['date']:
 if i.weekday() > 4:
   is_weekend.append(1)
 else:
   is_weekend.append(0)

Ya lo he intentado

is_weekend = [i == 1 for i in df['date'] if i.weekday() > 4 else i == 0]

Pero arroja errores de sintaxis no válidos.

¿Podrías ayudar?

0
girolamo 10 ene. 2022 a las 17:31

2 respuestas

La mejor respuesta

Esta es la forma correcta:

is_weekend = [1 if i.weekday() > 4 else 0 for i in df['date']]
2
Riccardo Bucco 10 ene. 2022 a las 17:38

Esto convertirá el valor booleano en 1 o 0, pero es iterativo.

is_weekend = [int(i.weekday() > 4) for i in df['date']]

Una mejor manera sería usar una lambda con apply en la columna date y convierta la serie resultante en una lista usando tolist.

is_weekend = df['date'].apply(lambda i: 1 if i.weekday() > 4 else 0).tolist()
1
Rahul 10 ene. 2022 a las 17:55