我有一个使用pandas读取的CSV,看起来像:
| URL | Status Code |
--------------- | ------------------|-------------|
0 | www.example.com | 404 |
----------------|-------------------|-------------|
1 | www.example.com/2 | 404 |
我想检查第二列上的网址是否仍然以404响应。我有以下代码:
url = df['URL']
urlData = requests.get(url).content
rawData = pd.read_csv(io.StringIO(urlData.decode('utf-8')))
print(rawData)
我收到以下错误:
InvalidSchema:找不到' 0 http://www.example.com
的连接适配器名称:URL,dtype:object'
我搜索了几个问题但找不到答案。任何帮助表示赞赏。
答案 0 :(得分:2)
requests.get
不是broadcastable,因此您必须使用pandas.DataFrame.apply
为每个网址拨打电话:
>>> df['New Status Code'] = df.URL.apply(lambda url: requests.get(url).status_code)
>>> df
Status Code URL New Status Code
0 404 www.example.com 404
1 404 www.example.com/2 404
或使用numpy.vectorize
:
>>> vectorized_get = numpy.vectorize(lambda url: requests.get(url).status_code)
>>> df['New Status Code'] = vectorized_get(df.URL)
答案 1 :(得分:0)
df ['URL']将返回一系列数据,而不是单个值。我怀疑你的代码正在炸毁requests.get(url).content line。
你可以发布更多代码吗?
您可能需要查看应用功能:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.apply.html。