2017-04-19 95 views
1

這似乎是一個簡單的問題,但我努力尋找解決方案。我有一個有兩列(ticker,target)的熊貓df和一個名爲stock_symbols的列表。簡單來說,這裏就是我想要做的(請注意,這不是我的代碼):熊貓更新專欄通過比較兩列到列表

For each value in df['ticker']: 
    If df['ticker'] is in [ticker_list]: 
     df['target'] = 1 
    Else: 
     df['target'] = 0 

回答

1

使用isin創建boolean mask將其轉化爲int(感謝Michael Hoff):

df['target'] = df['ticker'].isin(ticker_list).astype(int) 

示例:

ticker_list = ['s','f'] 
df = pd.DataFrame({'ticker':['s','d','f']}) 
print (df) 
    ticker 
0  s 
1  d 
2  f 

df['target'] = df['ticker'].isin(ticker_list).astype(int) 
print (df) 
    ticker target 
0  s  1 
1  d  0 
2  f  1 
+1

因爲'INT(真)== 1'和'INT(假)== 0' ... – mhoff

+0

啊,這是有道理的。我沒有把它分配回列值。讓我感到沮喪的是我看到的例子創建了一個新的df。謝謝! – pheeper