Créer une colonne remplie en fonction d'horaire (datetime)
Résolu/Fermé
quizzzzz
-
Modifié le 21 janv. 2022 à 14:31
mamiemando Messages postés 33088 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 30 avril 2024 - 21 janv. 2022 à 14:30
mamiemando Messages postés 33088 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 30 avril 2024 - 21 janv. 2022 à 14:30
A voir également:
- Créer une colonne remplie en fonction d'horaire (datetime)
- Créer un compte gmail - Guide
- Créer un compte google - Guide
- Déplacer une colonne excel - Guide
- Créer un groupe whatsapp - Guide
- Créer une liste déroulante excel - Guide
2 réponses
yg_be
Messages postés
22744
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
1 mai 2024
1 477
20 janv. 2022 à 22:28
20 janv. 2022 à 22:28
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)
mamiemando
Messages postés
33088
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
30 avril 2024
7 751
Modifié le 21 janv. 2022 à 14:31
Modifié le 21 janv. 2022 à 14:31
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