2017-08-25 3 views
-1

J'ai une grosse dataframe, nommée data, avec plusieurs colonnes et notamment une colonne "date".Correspondance des données d'une liste avec des données dans une colonne en python

Je veux créer une nouvelle colonne "days_BH" qui m'a dit si la date est un bankholidays ou non (= 1 pour oui et = 0 pour non).

Alors d'abord je créer une liste avec les jours fériés:

bank_holidays= ["01-01","05-01","05-08","07-14","11-01","11-11","12-25","08-15"] 

Et je veux le faire correspondre avec la date dans la colonne « données » qui sont en caractères: pandas.core.series.Series (Je ne comprends pas vraiment ce type).

Les données de la colonne, le format:% m-% d, ressemble à ceci (les 3 premières lignes):

data 
07-05 
07-06 
07-07 

Merci à l'avance,

Répondre

0

Supposons que vous avez cette dataframe:

data = pd.DataFrame() 
data["data"] = ["01-01", "05-01", "05-08", "07-14", "11-01", "11-11", "11-12", "11-13"] 
bank_holidays = ["01-01", "05-01", "05-08", "07-14", "11-01", "11-11", "12-25", "08-15"] 

Ensuite, vous pouvez utiliser .isin():

data["days_BH"] = data["data"].isin(bank_holidays).astype(int) 

Imprimé nouveau dataframe ressemblera à ceci:

data days_BH 
0 01-01  1 
1 05-01  1 
2 05-08  1 
3 07-14  1 
4 11-01  1 
5 11-11  1 
6 11-12  0 
7 11-13  0 
+0

merci !!!!!!!! –

0

Si le champ de liste et les données dans dataframe df['data'] sont de même type, cela doit faire:

bank_holidays= ["01-01","05-01","05-08","07-14","11-01","11-11","12-25","08-15"] 
df['days_BH'] = df['data'].apply(lambda x: x == bank_holidays).map({True: 1, False: 0})