这似乎是一个简单的问题,但我正在努力寻找解决方案。我有一个熊猫df,有两列(ticker,target)和一个名为stock_symbols的列表。简单来说,这就是我想要做的(请注意,这不是我的代码):

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

最佳答案

使用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

关于python - Pandas 通过将两列与列表进行比较来更新列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43499044/

10-12 20:09