首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字典中的For循环,用于在herepy中构造数据(PlacesAPI)

字典中的For循环,用于在herepy中构造数据(PlacesAPI)
EN

Stack Overflow用户
提问于 2021-04-09 12:37:23
回答 1查看 55关注 0票数 0

我正在使用Python,并且我试图访问函数PlacesAPI的结果,在那里我可以看到周围的超市,并使用for循环在主字典中创建一个包含每个字典的几个部分的数据same,但是我正在为不同的行获取相同的信息。

你能帮我把字典的每个不同部分放在一排不同的地方吗?

下面是我的代码和结果(现在是可复制的):

代码语言:javascript
复制
    from herepy import PlacesApi
    import pandas as pd

def dataframe():

    a = {'items': [{'title': 'Marcos Francisco dos Santos Padaria e Mercearia',
   'id': 'here:pds:place:07675crc-dfd72cbf57bd45cc9277ed8530ffd61b',
   'ontologyId': 'here:cm:ontology:supermarket',
   'resultType': 'place',
   'address': {'label': 'Marcos Francisco dos Santos Padaria e Mercearia, Rua Oswero Carmo Vilaça, 33, Petrópolis - RJ, 25635-101, Brazil',
    'countryCode': 'BRA',
    'countryName': 'Brazil',
    'stateCode': 'RJ',
    'state': 'Rio de Janeiro',
    'city': 'Petrópolis',
    'district': 'Petrópolis',
    'street': 'Rua Oswero Carmo Vilaça',
    'postalCode': '25635-101',
    'houseNumber': '33'},
   'position': {'lat': -22.5315, 'lng': -43.16904},
   'access': [{'lat': -22.5314, 'lng': -43.16914}],
   'distance': 134,
   'categories': [{'id': '600-6300-0066', 'name': 'Grocery', 'primary': True},
    {'id': '600-6300-0244', 'name': 'Bakery & Baked Goods Store'}],
   'contacts': [{'phone': [{'value': '+552422312493'}]}]},
  {'title': 'Mr. Frango',
   'id': 'here:pds:place:076jx7ps-7c214f50052f0c23c9e5422ebde7d3cd',
   'ontologyId': 'here:cm:ontology:supermarket',
   'resultType': 'place',
   'address': {'label': 'Mr. Frango, Rua Teresa, Petrópolis - RJ, 25635-530, Brazil',
    'countryCode': 'BRA',
    'countryName': 'Brazil',
    'stateCode': 'RJ',
    'state': 'Rio de Janeiro',
    'city': 'Petrópolis',
    'district': 'Petrópolis',
    'street': 'Rua Teresa',
    'postalCode': '25635-530'},
   'position': {'lat': -22.52924, 'lng': -43.17222},
   'access': [{'lat': -22.52925, 'lng': -43.1722}],
   'distance': 545,
   'categories': [{'id': '600-6300-0066', 'name': 'Grocery', 'primary': True},
    {'id': '600-6000-0061', 'name': 'Convenience Store'}],
   'references': [{'supplier': {'id': 'core'}, 'id': '1159487213'}],
   'contacts': [{'phone': [{'value': '+552422201010'},
      {'value': '+552422315720', 'categories': [{'id': '600-6000-0061'}]}]}]},
  {'title': 'Mercadinho Flor de Petrópolis',
   'id': 'here:pds:place:07675crc-6b03dfbac65a45c0bfc52ab9a3f04556',
   'ontologyId': 'here:cm:ontology:supermarket',
   'resultType': 'place',
   'address': {'label': 'Mercadinho Flor de Petrópolis, Rua Teresa, 2060, Petrópolis - RJ, 25635-530, Brazil',
    'countryCode': 'BRA',
    'countryName': 'Brazil',
    'stateCode': 'RJ',
    'state': 'Rio de Janeiro',
    'city': 'Petrópolis',
    'district': 'Petrópolis',
    'street': 'Rua Teresa',
    'postalCode': '25635-530',
    'houseNumber': '2060'},
   'position': {'lat': -22.52895, 'lng': -43.17233},
   'access': [{'lat': -22.52895, 'lng': -43.17219}],
   'distance': 574,
   'categories': [{'id': '600-6300-0066',
     'name': 'Grocery',
     'primary': True}]}]}


    value = []
    address = []
    latlong = []
    
    
    teste  =  pd.DataFrame(columns = ['nome','endereco','rua','numero',
                'cidade','estado','cep','lat','long','raio'])
    
    teste['nome'] = []    
    teste['endereco'] = [] 
    teste['rua'] = []
    teste['numero'] =[]
    teste['cidade'] = [] 
    teste['estado'] = []
    teste['cep'] = []
    teste['lat'] = []
    teste['long'] = []
    teste['raio'] = [] 
        
    
    g = pd.DataFrame.from_dict(a.values())
       
    h =[]
    
    for i in range(3):
        v = g[i].values[0]
        h = v.items()
        for k, l in  h:
                value.append(l)
        for c, d in value[4].items():
                address.append(d)
        for la, lo in value[5].items():
                latlong.append(lo)  
        novo_concorrente = {'nome': value[0], 'endereco':address[0], 
                           'rua':address[7], 'numero':address[9], 
                           'cidade':address[5], 'estado':address[3], 
                           'cep':address[8],'lat':latlong[0],
                           'long':latlong[1],'raio':value[7]}
    
        teste = teste.append(novo_concorrente, ignore_index=True)
        
    return teste
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-09 15:19:03

您应该专注于您的for循环。我建议您为要在最终DataFrame中定义的每一行创建一个字典,然后创建一个列表来将这些字典附加到其中。

例如:

代码语言:javascript
复制
rows = []
for item in a["items"]:
    row = {
        "Latitude": item["position"]["lat"],
        "Postal code": item["address"]["postalCode"],
    }
    rows.append(row)

result = DataFrame(rows)
result

希望它能作为一个起点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67021295

复制
相关文章

相似问题

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