我有一个pandas数据框和一个包含特定值的列表 我想检查列标题下的每个列值是否包含在列表中,如果找到,则要分配1,否则为0 在下面的示例中,列标题v下的列值将根据列表l。
中的值进行测试l=['a','e']
df = pd.DataFrame({'id':[1,2,3,4,5],'v' : ['a','b','c','d','e']})
df
id v
1 a
2 b
3 c
4 d
5 e
结果,我期待的是,
id v
1 1
2 0
3 0
4 0
5 1
我尝试使用
df['v'] = df['v'].apply(lambda x: x.isin(l))
但无法继续如何分配值1和0
答案 0 :(得分:6)
df.v.isin(l)
会给你一个布尔系列:
0 True
1 False
2 False
3 False
4 True
Name: v, dtype: bool
您可以使用astype
将其转换为0和0:
df.v.isin(l).astype(int)
0 1
1 0
2 0
3 0
4 1
Name: v, dtype: int32