当前位置: 首页 > 知识库问答 >
问题:

如何防止json_normalize重复熊猫中的列标题?

仇航
2023-03-14

我的json结构如下:

{
   "data": {
              "item1": {
                       "field1": "foo",
                       "field2": "bar",
                       "field3": "baz"
                       },
              "item2": {
                       "field1": "foo1",
                       "field2": "bar1",
                       "field3": "baz1"
                       },
           }
}

当我使用pd.io.json.json\u normalize规范化这个数据结构时,我得到了一个数据帧,每个数据项都有1行和重复的列标题。如何使重复的列显示为行而不是列?

我现在得到这个

field1 | field2 | field3 | field1 |field2 | field3

foo     | bar    | baz    | foo1   | bar1  | baz1  

我想要的是:

field1 | field2 | field3 |


foo     | bar    | baz

foo1    | bar1   | baz1

共有2个答案

司易安
2023-03-14

您可以尝试将data转换为list,然后使用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
陈坚
2023-03-14

这就是你想要的吗?

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
 类似资料:
  • 问题内容: 我刚刚发现了json_normalize函数,该函数在获取JSON对象并给我一个熊猫Dataframe时效果很好。现在,我想要反向操作,该操作采用相同的Dataframe并给我一个与原始json具有相同结构的json(或类似json的字典,我可以轻松地将其转换为json)。 这是一个示例:https : //hackersandslackers.com/json-into-pandas

  • 问题内容: 我读的使用。我想保留第一行作为数据,但是它一直在转换为列名。 我试过了,但这只是完全删除了它。 (请注意输入数据:我有一个字符串(),我将其转换为类似文件的对象(),然后从该文件对象进行构建。) 问题答案: 您希望将gets类型提升为查看文档重点类别: header:int或int列表,默认“ infer”行号(用作列名)以及数据的开头。如果未传递任何名称,则默认行为就像设置为0,否则

  • 问题内容: 我正在尝试在两个数据帧之间合并。每个数据帧都有两个索引级别(日期,客户)。在列中,例如,某些列在两者之间匹配(货币,日期)。 按索引合并这些内容的最佳方法是什么,但不要采用两个副本的货币和日期。 每个数据框都是90列,所以我试图避免用手将所有内容写出来。 如果我做: 我懂了 谢谢!… 问题答案: 您可以算出仅在一个DataFrame中的列,并使用它来选择合并中列的子集。 然后执行合并(

  • 我已经看到了将一个列/系列分解成熊猫数据框架的多个列这一主题的一些变体,但是我一直在尝试做一些事情,但是现有的方法并没有真正成功。 给定如下数据帧: 我想将系列中的项目转换为列,以 值作为值,如下所示: 我觉得这应该是一个相对简单的问题,但我已经为此努力了几个小时,不断增加的复杂程度,但没有成功。

  • 我试图将CSV字符串导出到D3 Web应用程序,但是命令坚持向数据添加尾随0,这阻止了D3的正确使用。 这里有一个简单的例子来说明这个问题。 我的(简化)数据帧是: 包含一个,如下所示: 然后根据这个答案,我运行要获取我想要的格式,请执行以下操作: 现在,包含一个

  • 我有4个值数据作为函数的输出。这是我的数据 这是我想要的