Bonjour à tous,
J'ai un dataframe avec les var:
JOUR = liste de jour du '2015-01-01' au '2015-12-31' en format string
JOUR_dt = les mêmes mais convertis en datetime
Je souhaiterais créer une var JOUR_TYPE qui prendrait les modalités:
- 'PONT s'il s'agit d'un pont
- 'VAC' si ce n'est pas un pont mais qu'on est en période de vacances scolaire
- 'SAM' si ce n'est ni un pont ni un jour de vacance scolaire et que c'est un samedi
- 'DIM' si ce n'est ni un pont ni un jour de vacance scolaire et que c'est un dimanche
- 'OTHER' sinon
J'ai réussit à créer une var 'PONT' qui prend les modalité 'PONT' ou other:
Question1: si j'utilise JOUR_dt python me renvoie une erreur. Il me dit que je ne peux pas comparer un 'datetime' avec un 'str'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 data2['PONT'] = data2['JOUR'].map(lambda x: 'PONT' if ((x>='2015-01-01' and x<='2015-01-04') or (x>='2015-05-01' and x<='2015-05-03') or (x>='2015-05-08' and x<='2015-05-10') or (x>='2015-07-11' and x<='2015-07-14') or (x=='2015-11-11') or (x>='2015-04-04' and x<='2015-04-06') or (x>='2015-05-14' and x<='2015-05-17') or (x>='2015-05-23' and x<='2015-05-25') or (x>='2015-08-13' and x<='2015-08-15') or (x>='2015-12-25-04' and x<='2015-12-27')) else 'OTHER')
Du coup j'utilise JOUR. Mais est-ce que Python comprend quand même les opérateur ">=" entre 2 string? Est-ce qu'il comprends quand même que c'est des dates.....?
Question2: j'ai définie de la même façon data2['VAC']. Ainsi que la var data2['WD'] = 0 si Lundi, 1 si Mardi, 2 si Mercredi.... 5 si Samedi et 6 si Dimanche
Mais je ne parviens pas à créer ma var JOUR_TYPE....
J'ai essayé:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 if data2['PONT'] == 'PONT': data2['JOUR_TYPE'] = 'PONT' elif data2['VAC'] == 'VAC': data2['JOUR_TYPE'] = 'VAC' elif data2['WD'] == 5: data2['JOUR_TYPE'] = 'SAM' elif data2['WD'] == 6: data2['JOUR_TYPE'] = 'DIM' else: data2['JOUR_TYPE'] = 'OTHER'
Mais j'obtiens l'erreur:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Est-ce que l'un de vous saurais m'aider...????
Merci d'avance,
Anne-Sophie
Partager