2017-04-19 70 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