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 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 21 janv. 2022 à 14:30
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 21 janv. 2022 à 14:30
A voir également:
- Créer une colonne remplie en fonction d'horaire (datetime)
- Déplacer une colonne excel - Guide
- Fonction si et - Guide
- Créer un compte google - Guide
- Créer un compte gmail - Guide
- Comment créer un groupe whatsapp - Guide
2 réponses
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
Ambassadeur
1 557
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
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
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