2017-08-16 71 views
2

我有一個熊貓數據框,看起來像這樣:檢查的熊貓數據幀中的列值存在於一系列

>>>df 
    Application ID  Name 
0   12   Sally 
1   32   Bill 
2   35   Dave 
3   11   Positivus 
4   09   Milan 

等一系列看起來像這樣

>>> skype_list 
0         Milan 
1         Sally 
2         Greg 
3         Jim 
4         Positivus 

我想循環訪問df.Name並創建一個列,如果名稱位於skype_list中,則該列的值爲1,否則爲0。結果應該是這個樣子:

>>>df 
     Application ID  Name   skype 
    0   12   Sally  1 
    1   32   Bill   0 
    2   35   Dave   0 
    3   11   Positivus 1 
    4   09   Milan  1 

現在我試圖建立這樣一個循環:

for x in df.Name: 
    if x in skype_list: 
     df['skype'].append(1) 
    else: 
     df['skype'].append(0) 

回答

4

或者你可以用isin

df['skype'] = df.Name.isin(skype_list).astype(int) 

df  
# Application ID  Name skype 
#0   0 12  Sally  1 
#1   1 32  Bill  0 
#2   2 35  Dave  0 
#3   3 11 Positivus  1 
#4   4 9  Milan  1 
2

是一個愚蠢的解決辦法是在這裏:

skype_names = set(skype_list.values) 
df['skype'] = df.Name.apply(lambda x: x in skype_names).astype(int) 
+0

也可以用lik e對我正在處理的數據充滿魅力 – cgclip