2 回答
![?](http://img1.sycdn.imooc.com/533e4c0500010c7602000200-100-100.jpg)
TA贡献1797条经验 获得超6个赞
您没有写到您只需要 data_points(如另一个答案中所示),所以我假设您希望将整个字典转换为 DataFrame。
为此,请从您的代码开始:
df = pd.DataFrame(historicalData)
它创建一个 DataFrame,其中data_points “分解”为连续行,但它们仍然是字典。
然后将open_price列重命名为open_price_all:
df.rename(columns={'open_price': 'open_price_all'}, inplace=True)
原因是为了避免在不久执行连接后出现重复的列名称 (data_points还包含open_price属性,我希望data_points 中的相应列 “继承”此名称)。
下一步是创建一个临时 DataFrame - 将data_points中的字典拆分为各个列:
wrk = df.data_points.apply(pd.Series)
打印wrk查看结果。
最后一步是将df与wrk连接并删除 data_points列(不再需要,因为它被分成单独的列):
result = df.join(wrk).drop(columns=['data_points'])
![?](http://img1.sycdn.imooc.com/5458683f00017bab02200220-100-100.jpg)
TA贡献2019条经验 获得超9个赞
通过下面的内容很容易解决这个问题。我已通过列表理解将数据框放入列表中
import pandas as pd
df_list = [pd.DataFrame(dic.items(), columns=['Parameters', 'Value']) for dic in historicalData['data_points']]
然后你可以这样做:
df_list[0]
这将产生
Parameters Value
0 begins_at 2020-10-05T13:30:00Z
1 open_price 1.430000
2 close_price 1.430000
3 high_price 1.430000
4 low_price 1.430000
5 volume 0
6 session reg
7 interpolated False
添加回答
举报