Saltar al contenido

Obtenga parte del día (mañana, tarde, noche, noche) en el marco de datos de Python

El paso a paso o código que hallarás en este artículo es la resolución más rápida y efectiva que encontramos a esta inquietud o problema.

Solución:

Usar cut o función personalizada con and y también cambió < a > y > a <= y también por cada valor agregado return:

prods = pd.DataFrame('hour':range(1, 25))

b = [0,4,8,12,16,20,24]
l = ['Late Night', 'Early Morning','Morning','Noon','Eve','Night']
prods['session'] = pd.cut(prods['hour'], bins=b, labels=l, include_lowest=True)

def f(x):
    if (x > 4) and (x <= 8):
        return 'Early Morning'
    elif (x > 8) and (x <= 12 ):
        return 'Morning'
    elif (x > 12) and (x <= 16):
        return'Noon'
    elif (x > 16) and (x <= 20) :
        return 'Eve'
    elif (x > 20) and (x <= 24):
        return'Night'
    elif (x <= 4):
        return'Late Night'

prods['session1'] = prods['hour'].apply(f)
print (prods)
    hour        session       session1
0      1     Late Night     Late Night
1      2     Late Night     Late Night
2      3     Late Night     Late Night
3      4     Late Night     Late Night
4      5  Early Morning  Early Morning
5      6  Early Morning  Early Morning
6      7  Early Morning  Early Morning
7      8  Early Morning  Early Morning
8      9        Morning        Morning
9     10        Morning        Morning
10    11        Morning        Morning
11    12        Morning        Morning
12    13           Noon           Noon
13    14           Noon           Noon
14    15           Noon           Noon
15    16           Noon           Noon
16    17            Eve            Eve
17    18            Eve            Eve
18    19            Eve            Eve
19    20            Eve            Eve
20    21          Night          Night
21    22          Night          Night
22    23          Night          Night
23    24          Night          Night

Después de algunas investigaciones, esta es la implementación más simple y eficiente que pude encontrar.

prods['period'] = (prods['hour_int'].dt.hour % 24 + 4) // 4
prods['period'].replace(1: 'Late Night',
                      2: 'Early Morning',
                      3: 'Morning',
                      4: 'Noon',
                      5: 'Evening',
                      6: 'Night', inplace=True)

Espero que esto ayude.

Aquí tienes las comentarios y puntuaciones

Te invitamos a corroborar nuestra misión poniendo un comentario y valorándolo te lo agradecemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *