检查Pandas列值是否包含在列表中并指定值

时间:2015-11-22 16:25:36

标签: python pandas

我有一个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

1 个答案:

答案 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