Python 如何将熊猫中的嵌套json分解为行?

Python 如何将熊猫中的嵌套json分解为行?,python,pandas,Python,Pandas,我的json如下所示 { "customer_name":"john", "phone":{ "mobile":000, "office":111 }, "mail":{ "office":"john@office.com", "personal":"john@home.com" } } 电话或邮件可以有一个或多个项目。而且,关键的办公室、手机、人员总是不一样的。例如,它可以是业务或备选方案。所以我想把它们转换成

我的json如下所示

{
   "customer_name":"john",
   "phone":{
      "mobile":000, 
      "office":111
   },
   "mail":{
      "office":"john@office.com", 
      "personal":"john@home.com"
   }
}
电话或邮件可以有一个或多个项目。而且,关键的办公室、手机、人员总是不一样的。例如,它可以是业务或备选方案。所以我想把它们转换成行而不是列。大多数问题都要转换为列,因此无法找到行的解决方案

最终的数据帧应该如下所示:

customer_name   |   phone.key   |   phone.val   |  mail.key   |   mail.value 
john            |   mobile      |   000         |             | 
john            |   office      |   111         |             |         
john            |               |               |  office     |   john@office.com
john            |               |               |  personal   |   john@home.com

有人能帮我吗?

Yiu可以更改嵌套字典的格式,添加新键的客户名称:

列出备选方案:

out = [{'customer_name':d['customer_name'],f'{k}.key': k1,f'{k}.value':v1} 
        for k, v in d.items() if isinstance(v, dict) for k1, v1 in v.items()]

Yiu可以使用新键更改添加了客户名称的嵌套字典的格式:

列出备选方案:

out = [{'customer_name':d['customer_name'],f'{k}.key': k1,f'{k}.value':v1} 
        for k, v in d.items() if isinstance(v, dict) for k1, v1 in v.items()]

如果您通过以下方式使用json_normalize来扁平化数据,则会更简单:

 from pandas.io.json import json_normalize
 data = {
  "customer_name":"john",
  "phone":{
     "mobile":000, 
     "office":111
   },
  "mail":{
    "office":"john@office.com", 
    "personal":"john@home.com"
   }
 }

 df = json_normalize(data)

如果您通过以下方式使用json_normalize来扁平化数据,则会更简单:

 from pandas.io.json import json_normalize
 data = {
  "customer_name":"john",
  "phone":{
     "mobile":000, 
     "office":111
   },
  "mail":{
    "office":"john@office.com", 
    "personal":"john@home.com"
   }
 }

 df = json_normalize(data)

你不能做这个json_规范化吗?@ScottBoston-Ya,像第一步是的,但接下来是必要的处理。你不能做这个json_规范化吗?@ScottBoston-Ya,像第一步是的,但接下来是必要的处理。只输出不匹配需要的@selvaoly输出不匹配需要的@Selva