首页 > 解决方案 > 如果列表中包含特定列中的值,我想在另一列中检查它

问题描述

案例:如果“nextday_date”列中的值包含在holiday_date_list中,我想在“nextday_holiday”中将其检查为1

下面的代码是正确的。但是这段代码可以更简洁吗?

train = pd.read_csv("./train.csv")
holiday_date_list = [a, b, c, d]

idx = [idx for idx, value in enumerate(train["nextday_date"]) if value in holiday_date_list]

train.loc[idx, "nextday_holiday"] = 1

标签: pythonpandas

解决方案


国际大学联盟:

df = pd.DataFrame([["11","2", "6"], ["12","4", "2"], ["13","3", "4"]],
             columns=["ix","a", "b"])

    ix  a   b
0   11  2   6
1   12  4   2
2   13  3   4

检查 a 中的值是否包含在 b 中的值中:

df['res']=df.a.isin(df.b).astype(int)
>>df

    ix  a   b   res
0   11  2   6   1
1   12  4   2   1
2   13  3   4   0

这也适用于列表。


推荐阅读