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:

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')
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'.
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