如何从含嵌套字典的对象生成指定格式的Pandas DataFrame?
问题描述
我尝试通过以下代码从包含嵌套字典的get_commission对象创建Pandas DataFrame:
import pandas as pd get_commission = {'info': {'symbol': 'ETHBTC', 'makerCommission': '0.001', 'takerCommission': '0.001'}, 'symbol': 'ETH/BTC:BTC', 'maker': 0.001, 'taker': 0.001} commission = pd.DataFrame(get_commission)
执行后得到的输出为:
info symbol maker taker makerCommission 0.001 ETH/BTC:BTC NaN 0.001 symbol ETHBTC ETH/BTC:BTC NaN 0.001 takerCommission 0.001 ETH/BTC:BTC NaN 0.001
我希望得到如下格式的DataFrame:
symbol maker taker ETH/BTC:BTC 0.001 0.001
请问该如何实现?
解决方案
直接提取字典中无需嵌套的目标字段,再构造DataFrame即可,以下是两种实用方法:
方法一:手动筛选目标字段
提取symbol、maker、taker三个字段组成新字典,注意用列表包裹值以生成单行数据:
import pandas as pd get_commission = {'info': {'symbol': 'ETHBTC', 'makerCommission': '0.001', 'takerCommission': '0.001'}, 'symbol': 'ETH/BTC:BTC', 'maker': 0.001, 'taker': 0.001} data = { 'symbol': [get_commission['symbol']], 'maker': [get_commission['maker']], 'taker': [get_commission['taker']] } commission = pd.DataFrame(data) print(commission)
方法二:过滤嵌套字段info
用字典推导式剔除info键,剩余字段直接构造DataFrame:
import pandas as pd get_commission = {'info': {'symbol': 'ETHBTC', 'makerCommission': '0.001', 'takerCommission': '0.001'}, 'symbol': 'ETH/BTC:BTC', 'maker': 0.001, 'taker': 0.001} filtered_data = {k: [v] for k, v in get_commission.items() if k != 'info'} commission = pd.DataFrame(filtered_data) print(commission)
两种方法运行后都会输出目标格式:
symbol maker taker 0 ETH/BTC:BTC 0.001 0.001
如果不需要默认索引列,可添加index=False参数:
commission = pd.DataFrame(filtered_data, index=False)
内容的提问来源于stack exchange,提问作者Andy Bun
相关产品推荐
相关产品推荐

