2017-08-25 76 views
-1

我有一个很大的数据框,名为data,有几列,特别是一列“date”。将列表中的数据与python中的列匹配

我想创建一个新的专栏“days_BH”谁说如果日期是bankholidays或不(如果是的话= 1,否= = 0)。

首先,我创建了法国银行假日列表:

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

而且我想在列“数据”,这是在键入日期匹配它:pandas.core.series.Series (我不太明白这种类型)。

列数据,格式为:%间 - %d,看起来像这样(3个第一行):

data 
07-05 
07-06 
07-07 

由于提前,

回答

0

假设你有这样的数据帧:

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"] 

然后你可以使用.isin()

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

印刷新数据帧将看起来像这样:

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

感谢!!!!!!!! –

0

如果列表和数据字段在数据帧df['data']都是同一类型的,然后这应该这样做:

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}) 
相关问题