将数据列表中的数据与python中的列匹配

时间:2017-08-25 09:57:00

标签: python list loops match

我有一个大数据框,名为数据,有几列,特别是一列" date"。

我想创建一个新专栏" days_BH"谁告诉我,如果日期是银行假日与否(= 1表示肯定,= 0表示否)。

首先,我创建一个法国银行假期列表:

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

我希望将其与列中的日期匹配'数据'它们的类型有:pandas.core.series.Series(我不太了解那种类型)。

列数据的格式为:%m-%d,如下所示(第3行):

data
07-05
07-06
07-07

提前致谢,

2 个答案:

答案 0 :(得分:0)

如果数据框bank_holidays中的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})

答案 1 :(得分: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