首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从JSON中选择某些值来构建Pandas dataframe?

如何从JSON中选择某些值来构建Pandas dataframe?
EN

Stack Overflow用户
提问于 2022-10-20 14:51:44
回答 1查看 22关注 0票数 0

我使用requests模块访问端点并返回一个JSON响应:

代码语言:javascript
复制
response = requests.get(endpoint, auth=(user_name, api_key)).json()

答复如下:

代码语言:javascript
复制
{'SalesInfoStatus': {'next_offset': 15,
  'sales': [{'saSalesID': '761S-1666031549-adhoc-0:0',
    'identifier': '761',
    'origin': 'New York',
    'destination': 'London',
    'filed_time': {'epoch': 1666033349,
     'time': '15:02',
     'date': '10/19/2022',
     'localtime': 1666018949},
     'actual_time': {'epoch': 1666033349,
     'time': '15:02',
     'date': '10/19/2022',
     'localtime': 1666018949},
    'inbound_saSalesID': '761S-1666029229-adhoc-0:0'},
   {'saSalesID': '762S-1666031549-adhoc-0:0',
    'identifier': '762',
    'origin': 'New York',
    'destination': 'London',
    'filed_time': {'epoch': 1666033349,
     'time': '15:02',
     'date': '10/17/2022',
     'localtime': 1666018949},
     'actual_time': {'epoch': 1666033349,
     'time': '15:02',
     'date': '10/17/2022',
     'localtime': 1666018949},
    'inbound_saSalesID': '762S-1666029229-adhoc-0:0'},

   {'saSalesID': '765S-1666031549-adhoc-0:0',
    'identifier': '765',
    'origin': 'Paris',
    'destination': 'Tokyo',
    'filed_time': {'epoch': 1666033349,
     'time': '15:02',
     'date': '10/15/2022',
     'localtime': 1666018949},
     'actual_time': {'epoch': 1666033349,
     'time': '15:02',
     'date': '10/15/2022',
     'localtime': 1666018949},
    'inbound_saSalesID': '765S-1666029229-adhoc-0:0'},

   {'saSalesID': '767S-1666031549-adhoc-0:0',
    'identifier': '767',
    'origin': 'Los Angeles',
    'destination': 'Sydney',
    'filed_time': {'epoch': 1666033349,
     'time': '15:02',
     'date': '10/13/2022',
     'localtime': 1666018949},
     'actual_time': {'epoch': 1666033349,
     'time': '15:02',
     'date': '10/13/2022',
     'localtime': 1666018949},
    'inbound_saSalesID': '767S-1666029229-adhoc-0:0'}

]}}

当我给type(response)打电话时,我得到了dict

我想从这个JSON构建一个包含dateorigindestinationidentifier字段的Pandas。

生成的dataframe如下所示:

代码语言:javascript
复制
date         origin          destination     identifier
10/19/22     New York        London          761
10/17/22     New York        London          762
10/15/22     Paris           Tokyo           765
10/13/22     Los Angeles     Sydney          767

我使用的方法如下:

代码语言:javascript
复制
df = pd.json_normalize(response)

但是,这将返回一个包含嵌套JSON的列的dataframe:

代码语言:javascript
复制
                   SalesInfoStatus
    sales          [{'saSalesID': '761S-1666031549-adhoc-0:0',... 
    next_offset    15                                  

如何将dateorigindestinationidentifier字段划分为它们自己的列?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-20 14:57:49

您可以在pd.json_normalize键的列表值上使用sales

代码语言:javascript
复制
df = pd.json_normalize(response['SalesInfoStatus']['sales'])[['filed_time.date', 'origin', 'destination', 'identifier']]
代码语言:javascript
复制
print(df)

  filed_time.date       origin destination identifier
0      10/19/2022     New York      London        761
1      10/17/2022     New York      London        762
2      10/15/2022        Paris       Tokyo        765
3      10/13/2022  Los Angeles      Sydney        767
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74141942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档