Python Pandas:提取字典列表中ohlc嵌套字典转换为DataFrame
解决方法:将嵌套的ohlc字典转换为pandas DataFrame
嘿,作为Python和pandas的新手,这个问题其实很好解决!我来一步步给你讲清楚怎么做。
首先,先确认你的原始数据(我把它整理成更易读的格式了):
data = [ { 'tradable': False, 'mode': 'quote', 'instrument_token': 256265, 'last_price': 10546.1, 'ohlc': { 'high': 10621.7, 'low': 10545.3, 'open': 10616.7, 'close': 10596.4 }, 'change': -0.474689517194512 } ]
方法1:直接提取ohlc字典并转换
这是最直观的方法,适合你现在只有单个数据项的情况:
- 先从列表里取出第一个(也是唯一一个)字典,然后提取
ohlc对应的嵌套字典 - 把这个字典放到一个列表里(因为pandas的
DataFrame()构造函数接受可迭代的字典集合) - 传入
pd.DataFrame()生成你要的表格
代码示例:
import pandas as pd # 提取ohlc字典 ohlc_data = data[0]['ohlc'] # 转换为DataFrame df = pd.DataFrame([ohlc_data]) # 查看结果 print(df)
运行后你会得到这样的输出:
high low open close 0 10621.7 10545.3 10616.7 10596.4
方法2:用pd.json_normalize处理嵌套数据
如果以后你的列表里会有多个这样的字典元素,用json_normalize会更高效,它能自动解析嵌套的JSON结构:
import pandas as pd # 直接解析整个数据列表,提取ohlc相关的字段 df = pd.json_normalize(data)[['ohlc.high', 'ohlc.low', 'ohlc.open', 'ohlc.close']] # 可选:把列名的前缀去掉,变成你想要的简洁名称 df.columns = ['high', 'low', 'open', 'close'] print(df)
这个方法的好处是不管你的列表里有1个还是100个数据项,都能一次性处理,不用写循环。
两种方法都能得到你需要的结果,选哪种看你的实际需求就好~
内容的提问来源于stack exchange,提问作者Pradeep Kumar.R
相关产品推荐
相关产品推荐

