在python中将列表中的数据与列中的数据进行匹配
我有一个很大的数据框,名为data,有几列,特别是一列“date” 我想创建一个新列“days_BH”,它告诉我日期是否为bankholidays(=1表示是,0表示否) 因此,首先我创建了一个关于法国银行假日的列表:在python中将列表中的数据与列中的数据进行匹配,python,list,loops,match,Python,List,Loops,Match,我有一个很大的数据框,名为data,有几列,特别是一列“date” 我想创建一个新列“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(我不太理解该
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行):
提前感谢,如果数据框
df['data']
中的bank_holidays
列表和数据字段的类型相同,则应执行以下操作:
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})
假设您有以下数据帧:
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
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
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