2015-11-22 86 views
2

我有一個熊貓數據框和一個包含特定值的列表。
我想檢查列標題下的每個列值是否包含在列表中,並且如果找到其他值爲0,則要分配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 

結果,我期待的,

id v 
1 1 
2 0 
3 0 
4 0 
5 1 

我嘗試使用

df['v'] = df['v'].apply(lambda x: x.isin(l)) 

,但無法繼續如何值爲1和0

回答

6

df.v.isin(l)分配會給你布爾系列:

0  True 
1 False 
2 False 
3 False 
4  True 
Name: v, dtype: bool 

可以使用astype它轉換成零和一:

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

0 1 
1 0 
2 0 
3 0 
4 1 
Name: v, dtype: int32 
相關問題