检查Pandas列值是否包含在列表中并分配值

Ash*_*ama 2 python pandas

我有一个pandas数据帧和一个包含特定值的列表.
我想检查列标题下的每个列值是否包含在列表中,如果找到其他
值,则要分配1.在下面的示例中,列标题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  
Run Code Online (Sandbox Code Playgroud)

结果,我期待的是,

id  v  
 1  1  
 2  0  
 3  0  
 4  0  
 5  1  
Run Code Online (Sandbox Code Playgroud)

我试过用

df['v'] = df['v'].apply(lambda x: x.isin(l))  
Run Code Online (Sandbox Code Playgroud)

但无法继续如何分配值1和0

hel*_*err 7

df.v.isin(l) 会给你一个布尔系列:

0     True
1    False
2    False
3    False
4     True
Name: v, dtype: bool
Run Code Online (Sandbox Code Playgroud)

您可以使用astype以下方法将其转换为零和一:

df.v.isin(l).astype(int)

0    1
1    0
2    0
3    0
4    1
Name: v, dtype: int32
Run Code Online (Sandbox Code Playgroud)