【问题标题】:How to prevent json_normalize from repeating column headings in Pandas?如何防止 json_normalize 在 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

【问题讨论】:

    标签: python json pandas


    【解决方案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
    

    【讨论】:

    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2019-11-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-15
      • 2019-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多