如何防止 json_normalize 在 Pandas 中重复列标题?
Posted
技术标签:
【中文标题】如何防止 json_normalize 在 Pandas 中重复列标题?【英文标题】:How to prevent json_normalize from repeating column headings in Pandas? 【发布时间】:2017-09-03 17:21:09 【问题描述】:我的json结构如下:
"data":
"item1":
"field1": "foo",
"field2": "bar",
"field3": "baz"
,
"item2":
"field1": "foo1",
"field2": "bar1",
"field3": "baz1"
,
当我使用pd.io.json.json_normalize
规范化这个数据结构时,我得到一个包含 1 行的数据框,并且每个数据项都有重复的列标题。如何让重复的列显示为行而不是列?
我现在得到了这个
field1 | field2 | field3 | field1 |field2 | field3
foo | bar | baz | foo1 | bar1 | baz1
我想要的是:
field1 | field2 | field3 |
foo | bar | baz
foo1 | bar1 | baz1
【问题讨论】:
【参考方案1】:这是你想要的吗?
In [31]: d
Out[31]:
'data': 'item1': 'field1': 'foo', 'field2': 'bar', 'field3': 'baz',
'item2': 'field1': 'foo1', 'field2': 'bar1', 'field3': 'baz1'
In [32]: pd.DataFrame(d['data']).T
Out[32]:
field1 field2 field3
item1 foo bar baz
item2 foo1 bar1 baz1
【讨论】:
我怀疑你已经投票了...但我edited the post...这很奇怪:-)【参考方案2】:您可以尝试将data
转换为列表,然后使用json_normalize
对数据进行归一化处理:
from pandas.io.json import json_normalize
content="data": "item1": "field1": "foo","field2": "bar","field3": "baz","item2": "field1": "foo1","field2": "bar1","field3": "baz1",
content["data"]=content["data"].values()
result = json_normalize(content,"data")
print(result)
输出:
field1 field2 field3
0 foo1 bar1 baz1
1 foo bar baz
【讨论】:
以上是关于如何防止 json_normalize 在 Pandas 中重复列标题?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 json_normalize 规范化嵌套的 json
如何正确 json_normalize 以便我以正确的格式获取数据帧?