Créer une colonne remplie en fonction d'horaire (datetime)
Résolu
Bonjour,
Je voudrais ajouter à mon
Ça fait bien 16 heures que je boucle sur le sujet, et je ne parviens pas à m'en sortir.
Pourriez-vous m'aider s'il vous plait ?
Je voudrais ajouter une colonne
Voici le code pour générer un
Ma piste principale est ce type d'instruction mais je ne parviens pas à la faire fonctionner ! :
Merci de m'avoir lu
Je voudrais ajouter à mon
DataFrameune colonne qui précise une période dans la journée sous forme de chaîne de caractère.
Ça fait bien 16 heures que je boucle sur le sujet, et je ne parviens pas à m'en sortir.
Pourriez-vous m'aider s'il vous plait ?
Je voudrais ajouter une colonne
'Shift'qui prend les valeurs suivantes :
-
'morning'
si05:30 < time <= 13:30
; -
'afternoon'
si13:30 < time <= 21:30
; -
'night'
si21:30 < time <= 05:30
;
Voici le code pour générer un
DataFramereprésentatif de ma situation.
import pandas as pd import numpy as np import datetime as dt import time dates = [ '21/12/2021 10:05', '20/12/2021 14:10', '19/12/2021 23:01', '18/12/2021 00:00' ] sales = [200,300,400,200] df = pd.DataFrame({'Date':dates ,'Sales':sales}) df['Date'] = pd.to_datetime(df['Date'],format='%d/%m/%Y %H:%M')
Ma piste principale est ce type d'instruction mais je ne parviens pas à la faire fonctionner ! :
df['Shift'] = df.where( df.between_time(start_time='05:30', end_time='13:30'), 'morning' )
Merci de m'avoir lu
A voir également:
- Créer une colonne remplie en fonction d'horaire (datetime)
- Déplacer une colonne excel - Guide
- Fonction si et - Guide
- Comment créer un groupe whatsapp - Guide
- Créer un compte google - Guide
- Trier une colonne excel - Guide
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
je ferais plutôt:
je ferais plutôt:
def tts(mom): ttd=mom.time() if ttd < dt.time(5,30): r = "night" elif ttd < dt.time(13,30): r='morning' else: r="plus tard" return r df["Shift"]=df['Date'].apply(tts)
Bonjour,
À mon avis tu te compliques un peu la vie car tes dates sont sous forme de chaînes au lieu d'être sous forme de date. Alors certes tu peux t'en sortie à coup de pandas mais c'est un peu traîner un boulet pour rien, quand tout peut être fait en amont du chargement de la
Voici ce que je te propose
... ce qui donne :
Bonne chance
À mon avis tu te compliques un peu la vie car tes dates sont sous forme de chaînes au lieu d'être sous forme de date. Alors certes tu peux t'en sortie à coup de pandas mais c'est un peu traîner un boulet pour rien, quand tout peut être fait en amont du chargement de la
DataFrame.
Voici ce que je te propose
import pandas as pd import datetime as dt dates = [ '21/12/2021 10:05', '20/12/2021 14:10', '19/12/2021 23:01', '18/12/2021 00:00' ] dates = [ dt.datetime.strptime(d, "%d/%m/%Y %H:%M") for d in dates ] sales = [200, 300, 400, 200] df = pd.DataFrame({ "Date" : dates , "Sales" : sales, "Shift" : [ "morning" if dt.time(5, 30) < d.time() <= dt.time(13, 30) else "afternoon" if d.time() < dt.time(21, 30) else "night" for d in dates ] }) print(df)
... ce qui donne :
Date Sales Shift
0 2021-12-21 10:05:00 200 morning
1 2021-12-20 14:10:00 300 afternoon
2 2021-12-19 23:01:00 400 night
3 2021-12-18 00:00:00 200 afternoon
Bonne chance