Python 如何将熊猫中的嵌套json分解为行?
我的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" } } 电话或邮件可以有一个或多个项目。而且,关键的办公室、手机、人员总是不一样的。例如,它可以是业务或备选方案。所以我想把它们转换成
{
"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