如何处理Cryptowatch API返回JSON生成Kraken现货USD对的Pandas DataFrame
问题原因说明
- 列数异常:接口返回的JSON结构中
result字段为键值对格式,键的命名规则是交易所标识:交易对,值为对应交易对的行情数据。直接对完整响应做json_normalize会把所有嵌套字段拍平为列,因此得到1行多列的错误结构。 - 单引号差异:JSON标准使用双引号,Python将JSON解析为字典对象后,打印时默认用单引号显示字符串,属于Python的字符串展示规则,不会影响实际数据使用,无需额外处理。
符合过滤要求的实现代码
import requests import pandas as pd # 请求接口 resp = requests.get("https://api.cryptowat.ch/markets/summaries") resp.raise_for_status() # 主动抛出请求异常 all_market_data = resp.json()["result"] # 处理并过滤数据 processed_list = [] for market_key, market_info in all_market_data.items(): # 拆分交易所和交易对名称 exchange, symbol = market_key.split(":", 1) # 过滤条件1:仅保留kraken现货,排除期货品类 if exchange != "kraken": continue # 过滤条件2:仅保留USD配对的交易对 if not symbol.endswith("usd"): continue # 合并基础标识和行情数据 row = {"exchange": exchange, "symbol": symbol} row.update(market_info) processed_list.append(row) # 生成规整DataFrame df = pd.json_normalize(processed_list) print(df.head())
生成的DataFrame每行对应一个符合要求的Kraken USD交易对,所有行情指标自动展开为对应列,需要导出到Excel的话可追加代码df.to_excel("kraken_usd_pairs.xlsx", index=False)即可。
内容的提问来源于stack exchange,提问作者VJKR
相关产品推荐
相关产品推荐

