【发布时间】:2021-05-31 16:30:44
【问题描述】:
我正在尝试将 Excel 数据加载到 Pandas DataFrame 中,然后将 ip_address 从 DataFrame 推送到以 json 格式返回信息的 api,然后将 json 中的结果附加回原始 DataFrame - 如何我这样做,遍历数据框中的每一行并每次都将结果附加回来?
初始数据帧:
date | ip | name
date1 | ip1 | name1
date2 | ip2 | name2
json:
{
"status": "ok",
"8.8.8.8": {
"proxy": "yes",
"type": "VPN",
"provider": "Google Inc",
"risk": 66
}
}
代码:
df = pd.read_excel (r'test_data.xlsx')
def query_api(ip_address):
risk_score = None
vpn_score = None
api_key = "xxx"
base_url = "http://falseacc.com/"
endpoint = f"{base_url}{ip_address}?key={api_key}&risk=1&vpn=1"
r = requests.get(endpoint)
if r.status_code not in range(200, 299):
return None, None
try:
with urllib.request.urlopen(endpoint) as url:
data = json.loads(url.read().decode())
proxy = (data[ip_address]['proxy'])
type = (data[ip_address]['type'])
risk = (data[ip_address]['risk'])
df2 = pd.Dataframe({"ip":[ip_address],
"proxy":[proxy],
"type":[type],
"risk":[risk]})
print(df2)
except:
print("No data")
预期输出: 数据框:
date | ip | name | proxy | type | risk
date1 | ip1 | name1 | proxy1 | type1 | risk1
date2 | ip2 | name2 | proxy2 | type2 | risk2
【问题讨论】:
-
API是否允许同时推送多个IP?