繁体   English   中英

将 json 动态拆分为多列 python

[英]split json into multi columns dynamically python

我正在尝试提取 API 响应并在 SQL 中制作表格或在 python 中制作数据框。

响应是这样的:

{'posts': [
{'ID': '15',
'Details': 'Hotel:Campsite;Message:Reservation inquiries '},

{'ID': '150',
'Details': 'Page:45-discount-y;PageLink:https://xx.xx.net/SS/45-discount-y/?lang=en&source=Call%20Center'},

{'ID': '13',
'Details': ''}]}

详细信息下有很多键或列。 所以我也想要一种动态的方式将细节分成多列

所需的 output:

ID 细节 酒店 信息 页面链接
15 酒店:营地;留言:预订查询 营地 预订查询 NULL NULL
150 Page:45-discount-y;PageLink: https://xx.xx.net/SS/45-discount-y/| NULL NULL 45-折扣-y https://xx.xx.net/SS/45-discount-y/|
13 NULL NULL NULL NULL NULL

尝试:

dct = {'posts': [
    {'ID': '15','Details': 'Hotel:Campsite;Message:Reservation inquiries '},
    {'ID': '150','Details': 'Page:45-discount-y;PageLink:https://xx.xx.net/SS/45-discount-y/?lang=en&source=Call%20Center'},
    {'ID': '13','Details': ''}
]}

all_data = []
for p in dct['posts']:
    all_data.append({'ID':p['ID'], 'Details':p['Details'], **dict(v.split(':', maxsplit=1) for v in p['Details'].split(';') if v)})

df = pd.DataFrame(all_data)
print(df.to_markdown())

印刷:

ID 细节 酒店 信息 页面链接
0 15 酒店:营地;留言:预订查询 营地 预订查询
1个 150 Page:45-discount-y;PageLink: https://xx.xx.net/SS/45-discount-y/?lang=en&source=Call%20Center 45-折扣-y https://xx.xx.net/SS/45-discount-y/?lang=zh&source=Call%20Center
2个 13

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM