为了账号安全,请及时绑定邮箱和手机立即绑定

将字典列表的字典转换为 pandas DataFrame

将字典列表的字典转换为 pandas DataFrame

繁花不似锦 2023-10-31 14:16:18
我从 RobinHoood 函数中提取了 AAPL 历史期权价格列表robin_stocks.get_option_historicals()。数据以字典列表的形式返回,如下所示。我在将以下对象(名为historicalData)转换为DataFrame. 有人可以帮忙吗?historicalData = {'data_points': [{'begins_at': '2020-10-05T13:30:00Z',   'open_price': '1.430000',   'close_price': '1.430000',   'high_price': '1.430000',   'low_price': '1.430000',   'volume': 0,   'session': 'reg',   'interpolated': False},{'begins_at': '2020-10-05T13:40:00Z',   'open_price': '1.430000',   'close_price': '1.340000',   'high_price': '1.440000',   'low_price': '1.320000',   'volume': 0,   'session': 'reg',   'interpolated': False}],'open_time': '0001-01-01T00:00:00Z','open_price': '0.000000','previous_close_time': '0001-01-01T00:00:00Z','previous_close_price': '0.000000','interval': '10minute','span': 'week','bounds': 'regular','id': '22b49380-8c50-4c76-8fb1-a4d06058f91e','instrument': 'https://api.robinhood.com/options/instruments/22b49380-8c50-4c76-8fb1-a4d06058f91e/'}我尝试了下面的代码,但这没有帮助:import pandas as pddf = pd.DataFrame(historicalData)df
查看完整描述

2 回答

?
互换的青春

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查看结果。

最后一步是将dfwrk连接并删除 data_points列(不再需要,因为它被分成单独的列):

result = df.join(wrk).drop(columns=['data_points'])


查看完整回答
反对 回复 2023-10-31
?
慕少森

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


查看完整回答
反对 回复 2023-10-31
  • 2 回答
  • 0 关注
  • 97 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信