Python 将字典列表中的字典转换为数据帧
我从Robinhood函数Python 将字典列表中的字典转换为数据帧,python,pandas,dataframe,Python,Pandas,Dataframe,我从Robinhood函数robin\u stocks.get\u option\u historicals()中提取了AAPL的历史期权价格列表。数据以字典列表的形式返回,如下所示 我很难将下面的对象(名为historicalData)转换为DataFrame。有人能帮忙吗 historicalData = {'data_points': [{'begins_at': '2020-10-05T13:30:00Z', 'open_price': '1.430000', 'close_
robin\u stocks.get\u option\u historicals()
中提取了AAPL的历史期权价格列表。数据以字典列表的形式返回,如下所示
我很难将下面的对象(名为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 pd
df = pd.DataFrame(historicalData)
df
用下面的方法很容易解决这个问题。我已经通过列表理解将数据框扔到了一个列表中
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
用下面的方法很容易解决这个问题。我已经通过列表理解将数据框扔到了一个列表中
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
您没有写下只想要数据点(如 其他答案),所以我假设您想要整本词典 转换为数据帧 要执行此操作,请从代码开始:
df = pd.DataFrame(historicalData)
它创建一个数据帧,数据点“分解”到
连续的行,但它们仍然是字典
然后将“打开价格”列重命名为“打开所有价格”:
原因是为了避免联接后出现重复的列名
即将执行(数据点也包含未平仓价格
属性,我希望从数据点得到相应的列
“继承”此名称)
下一步是创建一个临时数据帧,即
data_中的字典指向各个列:
wrk = df.data_points.apply(pd.Series)
打印wrk以查看结果
最后一步是将df与wrk和drop连接起来
数据点列(不再需要,因为它是
拆分为单独的列):
您没有写下只想要数据点(如 其他答案),所以我假设您想要整本词典 转换为数据帧 要执行此操作,请从代码开始:
df = pd.DataFrame(historicalData)
它创建一个数据帧,数据点“分解”到
连续的行,但它们仍然是字典
然后将“打开价格”列重命名为“打开所有价格”:
原因是为了避免联接后出现重复的列名
即将执行(数据点也包含未平仓价格
属性,我希望从数据点得到相应的列
“继承”此名称)
下一步是创建一个临时数据帧,即
data_中的字典指向各个列:
wrk = df.data_points.apply(pd.Series)
打印wrk以查看结果
最后一步是将df与wrk和drop连接起来
数据点列(不再需要,因为它是
拆分为单独的列):
非常感谢您的及时,我的目的是播种开始、开盘、收盘、高价、数量、会话、插值和我的数据帧列。上面的代码似乎没有做到这一点。我还可以使用其他代码吗?非常感谢您的及时帮助,我的目的是在开始时播种、开盘价、收盘价、高价、成交量、会话、插值和我的数据帧列。上面的代码似乎没有做到这一点。还有其他代码我可以使用吗?非常感谢,这完全回答了我的问题。如果事实是这样的话,我只想通过wrk这一步。非常感谢,这完全回答了我的问题。如果事实是这样的话,我只想和wrk合作。