python - 排除数据框中的异常
问题描述
我有一个从 Finviz 抓取数据的函数,该函数的一部分编译了一个指标列表。如果网站地址在遍历股票列表时不存在,它仍会在 Dataframe 中创建一行,其中包含股票名称,但不包含任何指标。我想要这样,如果它找不到该网站,该行要么在循环结束时被删除,要么根本不包括在内。任何有关如何调整此功能的见解将不胜感激。
def get_fundamental_data(df):
for symbol in df.index:
try:
#url = ("http://finviz.com/quote.ashx?t=" + symbol.lower())
r = requests.get("http://finviz.com/quote.ashx?t="+ symbol.lower(),headers=headers)
soup = bs(r.content,'html.parser')
for m in df.columns:
output = fundamental_metric(soup,m)
df.loc[symbol,m] = output
df = df.replace(['-'], np.NaN)
except Exception as e:
print (symbol, 'Not Found')
print(e)
return df
解决方案
一个简单的解决方案是存储发生异常的股票并在循环后删除这些行。行的删除将在 之后发生,for-loop
以避免在迭代数据帧时更改数据帧。
def get_fundamental_data(df):
symbols_to_drop = []
for symbol in df.index:
try:
#url = ("http://finviz.com/quote.ashx?t=" + symbol.lower())
r = requests.get("http://finviz.com/quote.ashx?t="+ symbol.lower(),headers=headers)
soup = bs(r.content,'html.parser')
for m in df.columns:
output = fundamental_metric(soup,m)
df.loc[symbol,m] = output
df = df.replace(['-'], np.NaN)
except Exception as e:
symbols_to_drop.append(symbol)
print (symbol, 'Not Found')
print(e)
df = df.drop(symbols_to_drop)
return df
推荐阅读
- rxjs - 在 rxjs 管道中实现循环逻辑
- reactjs - SharePoint SPFX:无法获取属性“上下文”
- java - java上的非法参数异常
- arduino - Arduino 字节 [] 到字符串
- php - 如何在 Mysql Select 中同时使用 LIKE 和 Equal
- sql-server - 无法远程访问驻留在 Azure Windows Server 2019 虚拟机上的 SQL Server
- javascript - 如何避免标签显示在堆积条形图上?
- python - 在将 tf.data.Dataset 传递给 fit 函数时,我们是否应该对其应用重复、批量洗牌?
- python - 对数据框进行分组并检查每组中唯一值的数量
- three.js - 仅在场景发生变化时才重新渲染场景的建议架构?