如何从Binance期货API返回的杠杆bracket数据中提取initialLeverage?
解决Binance期货杠杆档位数据提取initialLeverage的KeyError问题
你遇到的KeyError本质是没有正确处理brackets列的「列表嵌套字典」结构——直接对整个列做json_normalize或索引会因为层级不对报错。以下是两种可靠的解决方法:
方法一:拆分列表+展开字典(保留所有字段)
先把brackets里的列表拆成单独行,再展开每个字典的字段,适合需要完整档位数据的场景:
import pandas as pd from binance.client import Client # 初始化客户端并获取数据 client = Client("你的API_KEY", "你的API_SECRET") raw_data = client.futures_leverage_bracket() df = pd.DataFrame(raw_data) # 1. 将brackets列的列表拆分为单独行 df_exploded = df.explode("brackets", ignore_index=True) # 2. 展开字典列为独立字段 df_brackets = pd.json_normalize(df_exploded["brackets"]) # 3. 合并原表的其他字段(如symbol)和展开后的档位数据 df_final = pd.concat([df_exploded.drop("brackets", axis=1), df_brackets], axis=1) # 提取initialLeverage列 initial_leverage = df_final["initialLeverage"]
方法二:直接提取目标字段(仅保留initialLeverage)
如果只需要每个交易对对应的所有杠杆档位数值,用apply遍历列表提取即可:
# 直接提取每个symbol对应的所有initialLeverage值 df["initialLeverage"] = df["brackets"].apply(lambda x: [item["initialLeverage"] for item in x]) # 若需要拆成每行对应一个档位,继续用explode df_exploded = df.explode("initialLeverage", ignore_index=True)
容错处理(避免个别异常数据报错)
如果担心API返回的个别档位字典缺失字段,改用get()方法提取:
df["initialLeverage"] = df["brackets"].apply(lambda x: [item.get("initialLeverage", None) for item in x])
内容的提问来源于stack exchange,提问作者Timur Anitsky
相关产品推荐
相关产品推荐

