Python如何从Binance API返回的隔离保证金账户对象提取信息
提取Binance隔离保证金账户的netAsset字段
首先明确client.get_isolated_margin_account()的返回结构:它是一个嵌套字典,顶层包含assets字段,这个字段的值是列表,列表里的每个元素是单个资产的字典,其中就有你要的netAsset字段。
方法1:直接从字典提取(无需DataFrame)
不需要先转成DataFrame,直接遍历assets列表提取即可:
# 获取原始账户数据 isolated_account = client.get_isolated_margin_account() # 提取所有资产的netAsset到列表 all_net_assets = [asset['netAsset'] for asset in isolated_account['assets']] # 如果只需要某一个资产的netAsset(比如第一个) target_net_asset = isolated_account['assets'][0]['netAsset']
方法2:用DataFrame提取(正确姿势)
你之前的错误是把整个返回的字典直接转成DataFrame,导致assets列存的是列表,无法直接提取。正确做法是把assets列表单独转成DataFrame:
import pandas as pd # 获取原始数据 isolated_account = client.get_isolated_margin_account() # 将assets列表转为DataFrame,此时每个资产的字段都是列 account_df = pd.DataFrame(isolated_account['assets']) # 提取netAsset列,可转成Series或列表 net_assets_series = account_df['netAsset'] net_assets_list = account_df['netAsset'].tolist()
为什么你之前的方法失败?
你执行pd.DataFrame(client.get_isolated_margin_account())时,是把顶层字典的每个键(比如assets、totalAssetOfBtc等)作为DataFrame的列,其中assets列的每个单元格是一个资产字典的列表。这时候account.assets['assets']的写法完全不符合DataFrame的访问逻辑,自然无法拿到netAsset。
内容的提问来源于stack exchange,提问作者Andrei Filip
相关产品推荐
相关产品推荐

