如何将嵌套JSON中各stock的price字段分别生成独立pandas DataFrame
解决方法
你之前将整个stocks数组传入json_normalize,所以所有股票的价格数据会被合并到同一个DataFrame中。想要直接生成两个独立的DataFrame,单独处理stocks数组的每个元素即可:
方案1:按索引单独生成对应DataFrame
直接指定stocks数组的下标,分别调用json_normalize处理每个元素的price字段:
import pandas as pd # 生成第一个元素对应的df1(TSLA) df1 = pd.json_normalize(data['stocks'][0], record_path='price') # 生成第二个元素对应的df2(AMZN) df2 = pd.json_normalize(data['stocks'][1], record_path='price')
运行后df1和df2的结构完全符合你的预期,仅保留date和close两列。
方案2:批量生成所有股票的DataFrame列表
如果stocks数组元素数量不固定,可以用列表推导式一次性生成所有对应DataFrame的集合:
dfs = [pd.json_normalize(stock, record_path='price') for stock in data['stocks']] # 取第一个股票数据:dfs[0],第二个:dfs[1],以此类推
方案3:从你已生成的合并DataFrame拆分
如果你已经生成了带symbol字段的合并DataFrame,也可以直接拆分后删除多余字段:
# 拆分得到df1 df1 = df[df['symbol'] == 'TSLA'].drop('symbol', axis=1).reset_index(drop=True) # 拆分得到df2 df2 = df[df['symbol'] == 'AMZN'].drop('symbol', axis=1).reset_index(drop=True)
内容的提问来源于stack exchange,提问作者Sunny J
相关产品推荐
相关产品推荐

