如何用Pandas提取equity和unrealisedPnl字段创建DataFrame
解决Pandas提取嵌套字典指定字段的问题
问题根源
你之前直接将整个顶层字典传入pd.DataFrame(),Pandas会自动解析外层的BTC、ETH、free、used等键,自然拿不到嵌套在info.result.list里的目标字段。
解决方案步骤
- 精准定位目标数据:从原始字典中提取嵌套的列表
info.result.list,这才是包含equity和unrealisedPnl的核心数据集合。 - 创建DataFrame并筛选列:基于提取的列表生成DataFrame,直接指定需要保留的字段。
- 数据类型转换:将字符串格式的数值转为浮点型,方便后续计算或分析。
完整代码示例
import pandas as pd # 替换为你的完整原始数据字典 data = { 'info': {'retCode': '0', 'retMsg': 'OK', 'result': {'list': [ {'coin': 'BTC', 'equity': '0.05461474', 'unrealisedPnl': '-0.04489672'}, {'coin': 'ETH', 'equity': '0.92655684', 'unrealisedPnl': '0.00551504'}, {'coin': 'XRP', 'equity': '11.73802937', 'unrealisedPnl': '0'}, {'coin': 'USDT', 'equity': '913.78491494', 'unrealisedPnl': '-4228.19957193'}, # 其他币种数据... ]}}, # 外层的BTC、ETH等键... } # 1. 提取嵌套列表中的目标数据 target_list = data['info']['result']['list'] # 2. 创建DataFrame并选择需要的字段 df = pd.DataFrame(target_list)[['coin', 'equity', 'unrealisedPnl']] # 3. 将字符串数值转为浮点型 df['equity'] = df['equity'].astype(float) df['unrealisedPnl'] = df['unrealisedPnl'].astype(float) # 可选:过滤掉equity为0的无效币种 df = df[df['equity'] != 0] print(df)
输出结果示例
coin equity unrealisedPnl 0 BTC 0.054615 -0.044897 1 ETH 0.926557 0.005515 3 XRP 11.738029 0.000000 4 USDT 913.784915 -4228.199572
内容的提问来源于stack exchange,提问作者Gideon King
相关产品推荐
相关产品推荐

