从DataFrame取日期循环生成URL,转JSON为DataFrame遇属性错误
问题分析与解决方案
你遇到的AttributeError: 'str' object has no attribute 'json'错误,核心原因很明确:你试图对一个字符串(也就是你生成的URL)调用.json()方法,但只有requests库返回的Response对象才有这个方法。
咱们拆解一下问题:
- 第一段代码里你成功生成了目标URL字符串,但第二段代码里,你大概率是直接拿着这个URL字符串去调用
.json(),而没有先通过requests.get()发送请求获取响应对象。
修正步骤
- 先使用
requests.get(url)向目标URL发送请求,获取服务器返回的响应对象; - 调用响应对象的
.json()方法解析JSON格式的响应内容; - 再把解析后的JSON数据转换成DataFrame。
完整修正代码示例
import requests import pandas as pd # 替换成你实际使用的URL模板 url_template = "https://your-api-url.com/data?date={row}" df = pd.read_csv('NBADates.csv') for row in df.loc[:, "Date"]: url = url_template.format(row=row) print(f"正在请求目标URL: {url}") # 关键步骤:发送HTTP请求获取响应对象 response = requests.get(url) # 可选:检查请求是否成功,避免无效数据导致后续报错 response.raise_for_status() # 解析JSON响应数据 json_data = response.json() # 将JSON数据转换为DataFrame result_df = pd.DataFrame(json_data) # 这里可以添加后续处理逻辑,比如保存数据、分析数据等 print(f"当前日期数据处理完成,共{len(result_df)}条记录")
额外提示
- 务必把
url_template替换成你实际业务中使用的URL模板; response.raise_for_status()会在请求失败(比如404、500错误)时直接抛出异常,能帮你快速定位请求层面的问题;- 如果返回的JSON是嵌套结构,直接转DataFrame可能不符合预期,你需要先对
json_data做扁平化处理后再转换。
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

