Python:如何从列表中的字典创建 DataFrame 列 [重复]
Posted
技术标签:
【中文标题】Python:如何从列表中的字典创建 DataFrame 列 [重复]【英文标题】:Python: How to create DataFrame columns from a dict inside a list [duplicate] 【发布时间】:2018-03-20 00:28:58 【问题描述】:reference
我有一个以这种形式输出的字典:
response['candles'][0:2]
['complete': True,
'mid': 'c': '0.91535', 'h': '0.91535', 'l': '0.91535', 'o': '0.91535',
'time': '2002-05-06T21:00:00.000000000Z',
'volume': 1,
'complete': True,
'mid': 'c': '0.90435', 'h': '0.90435', 'l': '0.90435', 'o': '0.90435',
'time': '2002-05-07T21:00:00.000000000Z',
'volume': 1]
我可以轻松创建如下所示的 DataFrame:
res = pd.DataFrame(response['candles'])
complete mid time volume
0 True 'o': '0.91535', 'h': '0.91535', 'l': '0.91535... 2002-05-06T21:00:00.000000000Z 1
1 True 'o': '0.90435', 'h': '0.90435', 'l': '0.90435... 2002-05-07T21:00:00.000000000Z 1
我可以像这样访问 'mid' dict 项:
response['candles'][0]['mid']['c']
'0.91535'
但是如何在我的 DataFrame 中为每个“中间”项目添加列,而不是在 DataFrame 中添加一个 dict?我想要一个用于 ['mid']['o']、['mid']['h'] 等的列。
谢谢
【问题讨论】:
【参考方案1】:使用pandas.io.json.json_normalize
:
d = ['complete': True,
'mid': 'c': '0.91535', 'h': '0.91535', 'l': '0.91535', 'o': '0.91535',
'time': '2002-05-06T21:00:00.000000000Z',
'volume': 1,
'complete': True,
'mid': 'c': '0.90435', 'h': '0.90435', 'l': '0.90435', 'o': '0.90435',
'time': '2002-05-07T21:00:00.000000000Z',
'volume': 1]
pd.io.json.json_normalize(d)
#complete mid.c mid.h mid.l mid.o time volume
#0 True 0.91535 0.91535 0.91535 0.91535 2002-05-06T21:00:00.000000000Z 1
#1 True 0.90435 0.90435 0.90435 0.90435 2002-05-07T21:00:00.000000000Z 1
【讨论】:
可以使用apply(pd.Series)
吗?
@LiamHealy 是的。这也有效。
太棒了,谢谢!!!没想到是JSON格式...
感谢您的信息。我本来打算提供一个替代答案,但结果证明这个问题是重复的 - 由@cᴏʟᴅsᴘᴇᴇᴅ标记以上是关于Python:如何从列表中的字典创建 DataFrame 列 [重复]的主要内容,如果未能解决你的问题,请参考以下文章