json - 如何从嵌套字典中制作 DataFrame?
问题描述
我有一个 json 格式的数据。数据看起来像下面这样。
{ "8844250093":
{
"Name": "Sonu",
"Mobile": "1245787963",
"Date": "01/10/2017",
"Email": ""
},
"6583832455":
{
"Name": "yakub",
"Mobile": "3265982154",
"Date": "02/18/2017",
"SMSDetails":
{ "sms1":
{ "body":"dsgfdag",
"phone":"875"
},
"sms2":
{ "body":"hfgfyd",
"phone":"565"
}
},
"Email": ""
},
"659832582":
{
"Name": "sameer",
"Mobile": "5825982154",
"Date": "07/16/2018",
"SMSDetails": {"sms1":{"body":"lkjhgf","phone":"965"},
"sms2": {"body":"lpou","phone":"2354"}},
"Email": ""
}
}
我希望数据看起来像。从最近几天我一直在尝试,但无法成功。
S.Number key MobileNumber SMSbody SMSphone Date
1 8844250093 1245787963 NAN NAN 01/10/2017
2 6583832455 3265982154 dsgfdag 875 02/18/2017
3 6583832455 3265982154 hfgfyd 565 02/18/2017
4 659832582 5825982154 lkjhgf 965 07/16/2018
5 659832582 5825982154 lpou 2354 07/16/2018
解决方案
# d is Your dictionary
l = []
for i in d.keys():
if 'SMSDetails' not in d[i].keys():
x = dict(zip(d[i].keys(),d[i].values()))
l.append(x)
else:
temp = d[i]['SMSDetails']
for j in temp:
t = {
'Name':d[i]['Name'],
'Mobile':d[i]['Mobile'],
'Date':d[i]['Date'],
'Email':d[i]['Email'],
'SMSBody':temp[j]['body'],
'SMSPhone':temp[j]['phone']
}
l.append(t)
pd.DataFrame(l)
输出:
Date Email Mobile Name SMSBody SMSPhone
0 01/10/2017 1245787963 Sonu NaN NaN
1 02/18/2017 3265982154 yakub dsgfdag 875
2 02/18/2017 3265982154 yakub hfgfyd 565
3 07/16/2018 5825982154 sameer lkjhgf 965
4 07/16/2018 5825982154 sameer lpou 2354
编辑:您可以删除不需要的列,根据需要重新排序列。
希望能帮助到你!
推荐阅读
- wxpython - wxPython 应用程序终止创建主窗体 (Python 3.7)
- php - 为什么爆炸会返回整个数组?
- excel - 如何对两个范围地址之间的值求和
- sas - 为“按”组中的特定行数分配值 - SAS
- rest - 通过 REST 为 Github 项目创建里程碑
- sql - 运行多个 sql 查询并测试通过或失败 Spark Scala
- reactjs - 类组件内的 react-router-dom useParams()
- java - 网页警报的事件监听器
- junit5 - jqwik - 任意地图 - 在地图中生成随机数量的条目
- javascript - 如何使用 CSS 设置 Angular Material 选项卡的样式?