KeyError:'json文件不再支持将带有列表的likes传递给具有任何丢失标签的.loc或[]

时间:2020-03-26 09:59:44

标签: python json pandas indexing keyerror

{'meta': {'code': 200, 'requestId': '5e7c703bb9a389001b7d1e8c'},
 'response': {'suggestedFilters': {'header': 'Tap to show:',
   'filters': [{'name': 'Open now', 'key': 'openNow'}]},
  'headerLocation': 'Lagos',
  'headerFullLocation': 'Lagos',
  'headerLocationGranularity': 'city',
  'totalResults': 39,
  'suggestedBounds': {'ne': {'lat': 6.655478745000045,
    'lng': 3.355524537252914},
   'sw': {'lat': 6.565478654999954, 'lng': 3.2650912627470863}},
  'groups': [{'type': 'Recommended Places',
    'name': 'recommended',
    'items': [{'reasons': {'count': 0,
       'items': [{'summary': 'This spot is popular',
         'type': 'general',
         'reasonName': 'globalInteractionReason'}]},
      'venue': {'id': '502806dce4b0f23b021f3b77',
       'name': 'KFC',
       'location': {'lat': 6.604589745106469,
        'lng': 3.3089358809010045,
        'labeledLatLngs': [{'label': 'display',
          'lat': 6.604589745106469,
          'lng': 3.3089358809010045}],
        'distance': 672,
        'cc': 'NG',
        'city': 'Egbeda',
        'state': 'Lagos',
        'country': 'Nigeria',
        'formattedAddress': ['Egbeda', 'Lagos', 'Nigeria']},
       'categories': [{'id': '4bf58dd8d48988d16e941735',
         'name': 'Fast Food Restaurant',
         'pluralName': 'Fast Food Restaurants',
         'shortName': 'Fast Food',
         'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/food/fastfood_',
          'suffix': '.png'},
         'primary': True}],
       'photos': {'count': 0, 'groups': []}},
      'referralId': 'e-0-502806dce4b0f23b021f3b77-0'},

这是我文件中有关“结果”的一部分

然后我

def getCAT(row):
    try:
        categories_list=row['categories']
    except:
        categories_list=row['venue.categories']

    if len(categories_list)==0:
        return None
    else:
        return categories_list[0]['name']

venues = results ['response'] ['groups'] [0] ['items']

nearby_venues = pd.json_normalize(地点)

filtered_cols = ['venue.name','venue.catergories','venue.location.lat','venue.location.lng']

nearby_venues =附近_venues.loc [:,filtered_cols]

nearby_venues ['venue.categories'] = nearby_venues.apply(getCAT,axis = 1)

nearby_venues.columns = [col.split(“。”)[-1] for near_venues.columns中的col]

nearby_venues.head()

我收到KeyError:'json文件不再支持将列表式传递给.loc或[],并且缺少任何标签。

如果我注释掉那一部分,它运行良好,但结果有限。我在做什么错了?

1 个答案:

答案 0 :(得分:0)

pandas.DataFrame.loc

属性DataFrame.loc

通过标签或布尔数组访问一组行和列。

尝试从venue.行中删除iltered_cols=['venue.name', 'venue.catergories', 'venue.location.lat', 'venue.location.lng']