gpt4 book ai didi

python - 将 json 从 url 拉入数据帧错误

转载 作者:太空宇宙 更新时间:2023-11-03 21:16:17 25 4
gpt4 key购买 nike

看这里https://quant.stackexchange.com/questions/40538/automatically-get-ishares-etf-holdings/40610?noredirect=1#comment63646_40610似乎我可以指向一个包含文件的 url,以便将其拉入 DataFrame 中:

import pandas as pd
url = 'https://www.ishares.com/us/products/239705/ishares-phlx-semiconductor-etf/1467271812596.ajax?fileType=csv'
df = pd.read_csv(url, skiprows=10)
print(df.head())

我尝试对 json 类型文件执行相同的操作:

import pandas as pd
url = 'https://www.ishares.com/us/products/etf-product-list/1522815705927.ajax?fileType=json'
df = pd.read_json(url)
print(df.head()

但是,它抛出一个 ValueError: Expected object or value。我尝试添加 lines=True 和其他变体,但没有成功。如何将此 json 拉为数据框?

您可以访问https://www.ishares.com/us/products/etf-product-list来查看它的实际外观。并单击“下载”(这会生成 .xls),或者在浏览器中输入 https://www.ishares.com/us/products/etf-product-list/1522815705927.ajax?fileType=json 。我不选择 fileType=csvxls 的原因是 csv 返回带有大量 JS 代码的意外输出,而 xls 返回 HTTP 500 错误。

最佳答案

我不确定错误的原因是什么,但这里有一个使用请求库的解决方法:

import requests
from json import loads
import pandas as pd

url = 'https://www.ishares.com/us/products/etf-product-list/1522815705927.ajax?fileType=json'
json_dict = loads(requests.get(url).content)

#parse headers
headers=[]
for header in json_dict['columns']:
headers.append(header['name'])

df = pd.DataFrame(json_dict['data'], columns=headers)

希望这有帮助。

关于python - 将 json 从 url 拉入数据帧错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54681235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com