Search code examples
pythonjsonpandaskeyerror

Python Error while parsing JSON when string changes


When trying to parse JSON dict using json_normalize() function it works for a JSON string, but when the elements from the JSON string changes it throws error, I have got a function created from this post here is the JSON_string for which the code works

{"results": [{"address_components": [{"long_name": "Satya Niwas",
     "short_name": "Satya Niwas",
     "types": ["establishment", "point_of_interest", "premise"]},
    {"long_name": "Kanti Nagar",
     "short_name": "Kanti Nagar",
     "types": ["political", "sublocality", "sublocality_level_3"]},
    {"long_name": "J B Nagar",
     "short_name": "J B Nagar",
     "types": ["political", "sublocality", "sublocality_level_2"]},
    {"long_name": "Andheri East",
     "short_name": "Andheri East",
     "types": ["political", "sublocality", "sublocality_level_1"]},
    {"long_name": "Mumbai",
     "short_name": "Mumbai",
     "types": ["locality", "political"]},
    {"long_name": "Mumbai Suburban",
     "short_name": "Mumbai Suburban",
     "types": ["administrative_area_level_2", "political"]},
    {"long_name": "Maharashtra",
     "short_name": "MH",
     "types": ["administrative_area_level_1", "political"]},
    {"long_name": "India",
     "short_name": "IN",
     "types": ["country", "political"]},
    {"long_name": "400059", "short_name": "400059", "types": ["postal_code"]}],
   "formatted_address": "Satya Niwas, Kanti Nagar, J B Nagar, Andheri East, Mumbai, Maharashtra 400059, India",
   "geometry": {"bounds": {"northeast": {"lat": 19.1097923, "lng": 72.8675306},
     "southwest": {"lat": 19.1095784, "lng": 72.8673391}},
    "location": {"lat": 19.1096591, "lng": 72.8674712},
    "location_type": "ROOFTOP",
    "viewport": {"northeast": {"lat": 19.1110343302915,
      "lng": 72.8687838302915},
     "southwest": {"lat": 19.1083363697085, "lng": 72.86608586970848}}},
   "place_id": "ChIJ4UsP5DjI5zsR8hgwhHo9wEk",
   "types": ["establishment", "point_of_interest", "premise"]},
  {"address_components": [{"long_name": "82",
     "short_name": "82",
     "types": ["premise"]},
    {"long_name": "Bamanpuri",
     "short_name": "Bamanpuri",
     "types": ["neighborhood", "political"]},
    {"long_name": "Ajit Nagar",
     "short_name": "Ajit Nagar",
     "types": ["political", "sublocality", "sublocality_level_3"]},
    {"long_name": "J B Nagar",
     "short_name": "J B Nagar",
     "types": ["political", "sublocality", "sublocality_level_2"]},
    {"long_name": "Andheri East",
     "short_name": "Andheri East",
     "types": ["political", "sublocality", "sublocality_level_1"]},
    {"long_name": "Mumbai",
     "short_name": "Mumbai",
     "types": ["locality", "political"]},
    {"long_name": "Mumbai Suburban",
     "short_name": "Mumbai Suburban",
     "types": ["administrative_area_level_2", "political"]},
    {"long_name": "Maharashtra",
     "short_name": "MH",
     "types": ["administrative_area_level_1", "political"]},
    {"long_name": "India",
     "short_name": "IN",
     "types": ["country", "political"]},
    {"long_name": "400053", "short_name": "400053", "types": ["postal_code"]}],
   "formatted_address": "82, Bamanpuri, Ajit Nagar, J B Nagar, Andheri East, Mumbai, Maharashtra 400053, India",
   "geometry": {"location": {"lat": 19.109749, "lng": 72.867249},
    "location_type": "ROOFTOP",
    "viewport": {"northeast": {"lat": 19.1110979802915,
      "lng": 72.8685979802915},
     "southwest": {"lat": 19.1084000197085, "lng": 72.86590001970849}}},
   "place_id": "ChIJqYip4zjI5zsR0Yg8bdXQX3o",
   "types": ["street_address"]},
  {"address_components": [{"long_name": "Todi Building",
     "short_name": "Todi Building",
     "types": ["premise"]},
    {"long_name": "Sheth Bhavanidas Benani Marg",
     "short_name": "Sheth Bhavanidas Benani Marg",
     "types": ["route"]},
    {"long_name": "Kanti Nagar",
     "short_name": "Kanti Nagar",
     "types": ["political", "sublocality", "sublocality_level_3"]},
    {"long_name": "J B Nagar",
     "short_name": "J B Nagar",
     "types": ["political", "sublocality", "sublocality_level_2"]},
    {"long_name": "Andheri East",
     "short_name": "Andheri East",
     "types": ["political", "sublocality", "sublocality_level_1"]},
    {"long_name": "Mumbai",
     "short_name": "Mumbai",
     "types": ["locality", "political"]},
    {"long_name": "Mumbai Suburban",
     "short_name": "Mumbai Suburban",
     "types": ["administrative_area_level_2", "political"]},
    {"long_name": "Maharashtra",
     "short_name": "MH",
     "types": ["administrative_area_level_1", "political"]},
    {"long_name": "India",
     "short_name": "IN",
     "types": ["country", "political"]},
    {"long_name": "400059", "short_name": "400059", "types": ["postal_code"]}],
   "formatted_address": "Todi Building, Sheth Bhavanidas Benani Marg, Kanti Nagar, J B Nagar, Andheri East, Mumbai, Maharashtra 400059, India",
   "geometry": {"location": {"lat": 19.1098265, "lng": 72.86778869999999},
    "location_type": "ROOFTOP",
    "viewport": {"northeast": {"lat": 19.1111754802915,
      "lng": 72.86913768029149},
     "southwest": {"lat": 19.1084775197085, "lng": 72.86643971970848}}},
   "place_id": "ChIJo5bq3zjI5zsR2hRaNQF3xd0",
   "types": ["premise"]},
  {"address_components": [{"long_name": "KASI APARTMENTS",
     "short_name": "KASI APARTMENTS",
     "types": ["establishment", "point_of_interest", "premise"]},
    {"long_name": "Shriniwas Bagarka Road",
     "short_name": "Shriniwas Bagarka Rd",
     "types": ["route"]},
    {"long_name": "Bamanpuri",
     "short_name": "Bamanpuri",
     "types": ["neighborhood", "political"]},
    {"long_name": "Kanti Nagar",
     "short_name": "Kanti Nagar",
     "types": ["political", "sublocality", "sublocality_level_3"]},
    {"long_name": "J B Nagar",
     "short_name": "J B Nagar",
     "types": ["political", "sublocality", "sublocality_level_2"]},
    {"long_name": "Andheri East",
     "short_name": "Andheri East",
     "types": ["political", "sublocality", "sublocality_level_1"]},
    {"long_name": "Mumbai",
     "short_name": "Mumbai",
     "types": ["locality", "political"]},
    {"long_name": "Mumbai Suburban",
     "short_name": "Mumbai Suburban",
     "types": ["administrative_area_level_2", "political"]},
    {"long_name": "Maharashtra",
     "short_name": "MH",
     "types": ["administrative_area_level_1", "political"]},
    {"long_name": "India",
     "short_name": "IN",
     "types": ["country", "political"]},
    {"long_name": "400059", "short_name": "400059", "types": ["postal_code"]}],
   "formatted_address": "KASI APARTMENTS, Shriniwas Bagarka Rd, Bamanpuri, Kanti Nagar, J B Nagar, Andheri East, Mumbai, Maharashtra 400059, India",
   "geometry": {"location": {"lat": 19.1093338, "lng": 72.8670515},
    "location_type": "ROOFTOP",
    "viewport": {"northeast": {"lat": 19.1106827802915,
      "lng": 72.86840048029151},
     "southwest": {"lat": 19.10798481970849, "lng": 72.86570251970849}}},
   "place_id": "ChIJoUz25DjI5zsRiMoiQtq5kXs",
   "types": ["establishment", "point_of_interest", "premise"]},
  {"address_components": [{"long_name": "Silver Line Apts.",
     "short_name": "Silver Line Apts.",
     "types": ["premise"]},
    {"long_name": "Bamanpuri",
     "short_name": "Bamanpuri",
     "types": ["neighborhood", "political"]},
    {"long_name": "J.B. Nagar",
     "short_name": "J.B. Nagar",
     "types": ["political", "sublocality", "sublocality_level_3"]},
    {"long_name": "J B Nagar",
     "short_name": "J B Nagar",
     "types": ["political", "sublocality", "sublocality_level_2"]},
    {"long_name": "Andheri East",
     "short_name": "Andheri East",
     "types": ["political", "sublocality", "sublocality_level_1"]},
    {"long_name": "Mumbai",
     "short_name": "Mumbai",
     "types": ["locality", "political"]},
    {"long_name": "Mumbai Suburban",
     "short_name": "Mumbai Suburban",
     "types": ["administrative_area_level_2", "political"]},
    {"long_name": "Maharashtra",
     "short_name": "MH",
     "types": ["administrative_area_level_1", "political"]},
    {"long_name": "India",
     "short_name": "IN",
     "types": ["country", "political"]},
    {"long_name": "400047", "short_name": "400047", "types": ["postal_code"]}],
   "formatted_address": "Silver Line Apts., Bamanpuri, J.B. Nagar, J B Nagar, Andheri East, Mumbai, Maharashtra 400047, India",
   "geometry": {"location": {"lat": 19.1091075, "lng": 72.8670776},
    "location_type": "ROOFTOP",
    "viewport": {"northeast": {"lat": 19.1104564802915,
      "lng": 72.86842658029151},
     "southwest": {"lat": 19.1077585197085, "lng": 72.86572861970849}}},
   "place_id": "ChIJEQ3_ZzjI5zsR9LxIP1h2b2c",
   "types": ["premise"]},
  {"address_components": [{"long_name": "Gokul panch chs",
     "short_name": "Gokul panch chs",
     "types": ["establishment", "point_of_interest"]},
    {"long_name": "81-B", "short_name": "81-B", "types": ["street_number"]},
    {"long_name": "Sheth Bhavanidas Benani Marg",
     "short_name": "Sheth Bhavanidas Benani Marg",
     "types": ["route"]},
    {"long_name": "Bamanpuri",
     "short_name": "Bamanpuri",
     "types": ["neighborhood", "political"]},
    {"long_name": "Ajit Nagar",
     "short_name": "Ajit Nagar",
     "types": ["political", "sublocality", "sublocality_level_3"]},
    {"long_name": "J B Nagar",
     "short_name": "J B Nagar",
     "types": ["political", "sublocality", "sublocality_level_2"]},
    {"long_name": "Andheri East",
     "short_name": "Andheri East",
     "types": ["political", "sublocality", "sublocality_level_1"]},
    {"long_name": "Mumbai",
     "short_name": "Mumbai",
     "types": ["locality", "political"]},
    {"long_name": "Mumbai Suburban",
     "short_name": "Mumbai Suburban",
     "types": ["administrative_area_level_2", "political"]},
    {"long_name": "Maharashtra",
     "short_name": "MH",
     "types": ["administrative_area_level_1", "political"]},
    {"long_name": "India",
     "short_name": "IN",
     "types": ["country", "political"]},
    {"long_name": "400047", "short_name": "400047", "types": ["postal_code"]}],
   "formatted_address": "Gokul panch chs, 81-B, 81-B, Sheth Bhavanidas Benani Marg, Bamanpuri, Ajit Nagar, J B Nagar, Andheri East, Mumbai, Maharashtra 400047, India",
   "geometry": {"location": {"lat": 19.1098713, "lng": 72.86705669999999},
    "location_type": "ROOFTOP",
    "viewport": {"northeast": {"lat": 19.1112202802915,
      "lng": 72.8684056802915},
     "southwest": {"lat": 19.1085223197085, "lng": 72.8657077197085}}},
   "place_id": "ChIJpUuz4jjI5zsRpgQdmR5E1v0",
   "types": ["establishment", "point_of_interest"]},
  {"address_components": [{"long_name": "Ajit Nagar",
     "short_name": "Ajit Nagar",
     "types": ["political", "sublocality", "sublocality_level_3"]},
    {"long_name": "J B Nagar",
     "short_name": "J B Nagar",
     "types": ["political", "sublocality", "sublocality_level_2"]},
    {"long_name": "Andheri East",
     "short_name": "Andheri East",
     "types": ["political", "sublocality", "sublocality_level_1"]},
    {"long_name": "Mumbai",
     "short_name": "Mumbai",
     "types": ["locality", "political"]},
    {"long_name": "Mumbai Suburban",
     "short_name": "Mumbai Suburban",
     "types": ["administrative_area_level_2", "political"]},
    {"long_name": "Maharashtra",
     "short_name": "MH",
     "types": ["administrative_area_level_1", "political"]},
    {"long_name": "India",
     "short_name": "IN",
     "types": ["country", "political"]},
    {"long_name": "400047", "short_name": "400047", "types": ["postal_code"]}],
   "formatted_address": "Ajit Nagar, J B Nagar, Andheri East, Mumbai, Maharashtra 400047, India",
   "geometry": {"bounds": {"northeast": {"lat": 19.1119198, "lng": 72.8714133},
     "southwest": {"lat": 19.1085396, "lng": 72.8662167}},
    "location": {"lat": 19.1103164, "lng": 72.8680732},
    "location_type": "APPROXIMATE",
    "viewport": {"northeast": {"lat": 19.1119198, "lng": 72.8714133},
     "southwest": {"lat": 19.1085396, "lng": 72.8662167}}},
   "place_id": "ChIJPWPg4zjI5zsRJWPFphEkcxc",
   "types": ["political", "sublocality", "sublocality_level_3"]},
  {"address_components": [{"long_name": "Bamanpuri",
     "short_name": "Bamanpuri",
     "types": ["neighborhood", "political"]},
    {"long_name": "J B Nagar",
     "short_name": "J B Nagar",
     "types": ["political", "sublocality", "sublocality_level_2"]},
    {"long_name": "Andheri East",
     "short_name": "Andheri East",
     "types": ["political", "sublocality", "sublocality_level_1"]},
    {"long_name": "Mumbai",
     "short_name": "Mumbai",
     "types": ["locality", "political"]},
    {"long_name": "Mumbai Suburban",
     "short_name": "Mumbai Suburban",
     "types": ["administrative_area_level_2", "political"]},
    {"long_name": "Maharashtra",
     "short_name": "MH",
     "types": ["administrative_area_level_1", "political"]},
    {"long_name": "India",
     "short_name": "IN",
     "types": ["country", "political"]},
    {"long_name": "400047", "short_name": "400047", "types": ["postal_code"]}],
   "formatted_address": "Bamanpuri, J B Nagar, Andheri East, Mumbai, Maharashtra 400047, India",
   "geometry": {"bounds": {"northeast": {"lat": 19.1102874, "lng": 72.869838},
     "southwest": {"lat": 19.1060651, "lng": 72.8635609}},
    "location": {"lat": 19.1084347, "lng": 72.86574929999999},
    "location_type": "APPROXIMATE",
    "viewport": {"northeast": {"lat": 19.1102874, "lng": 72.869838},
     "southwest": {"lat": 19.1060651, "lng": 72.8635609}}},
   "place_id": "ChIJIYgnUDjI5zsRK_Zl9Zy_QkY",
   "types": ["neighborhood", "political"]},
  {"address_components": [{"long_name": "J B Nagar",
     "short_name": "J B Nagar",
     "types": ["political", "sublocality", "sublocality_level_2"]},
    {"long_name": "Andheri East",
     "short_name": "Andheri East",
     "types": ["political", "sublocality", "sublocality_level_1"]},
    {"long_name": "Mumbai",
     "short_name": "Mumbai",
     "types": ["locality", "political"]},
    {"long_name": "Mumbai Suburban",
     "short_name": "Mumbai Suburban",
     "types": ["administrative_area_level_2", "political"]},
    {"long_name": "Maharashtra",
     "short_name": "MH",
     "types": ["administrative_area_level_1", "political"]},
    {"long_name": "India",
     "short_name": "IN",
     "types": ["country", "political"]},
    {"long_name": "400047", "short_name": "400047", "types": ["postal_code"]}],
   "formatted_address": "J B Nagar, Andheri East, Mumbai, Maharashtra 400047, India",
   "geometry": {"bounds": {"northeast": {"lat": 19.1161579, "lng": 72.871533},
     "southwest": {"lat": 19.1008041, "lng": 72.8606231}},
    "location": {"lat": 19.1110621, "lng": 72.8655922},
    "location_type": "APPROXIMATE",
    "viewport": {"northeast": {"lat": 19.1161579, "lng": 72.871533},
     "southwest": {"lat": 19.1008041, "lng": 72.8606231}}},
   "place_id": "ChIJt8_u6TjI5zsRR9eE5rMK45A",
   "types": ["political", "sublocality", "sublocality_level_2"]},
  {"address_components": [{"long_name": "Andheri East",
     "short_name": "Andheri East",
     "types": ["political", "sublocality", "sublocality_level_1"]},
    {"long_name": "Mumbai",
     "short_name": "Mumbai",
     "types": ["locality", "political"]},
    {"long_name": "Mumbai Suburban",
     "short_name": "Mumbai Suburban",
     "types": ["administrative_area_level_2", "political"]},
    {"long_name": "Maharashtra",
     "short_name": "MH",
     "types": ["administrative_area_level_1", "political"]},
    {"long_name": "India",
     "short_name": "IN",
     "types": ["country", "political"]}],
   "formatted_address": "Andheri East, Mumbai, Maharashtra, India",
   "geometry": {"bounds": {"northeast": {"lat": 19.1327276,
      "lng": 72.89305499999999},
     "southwest": {"lat": 19.096748, "lng": 72.843926}},
    "location": {"lat": 19.1154908, "lng": 72.8726952},
    "location_type": "APPROXIMATE",
    "viewport": {"northeast": {"lat": 19.1327276, "lng": 72.89305499999999},
     "southwest": {"lat": 19.096748, "lng": 72.843926}}},
   "place_id": "ChIJMbHfQRu25zsRMazdY3UpaKY",
   "types": ["political", "sublocality", "sublocality_level_1"]}],
 "status": "OK"}

here is the JSON string for which the code throws error

[{"address_components":[{"long_name":"Mahapurush Srimanta Sankardeva Path","short_name":"Mahapurush Srimanta Sankardeva Path","types":["route"]},{"long_name":"Jaya Nagar","short_name":"Jaya Nagar","types":["political","sublocality","sublocality_level_2"]},{"long_name":"Khanapara","short_name":"Khanapara","types":["political","sublocality","sublocality_level_1"]},{"long_name":"Guwahati","short_name":"Guwahati","types":["locality","political"]},{"long_name":"Kamrup","short_name":"Kamrup","types":["administrative_area_level_2","political"]},{"long_name":"Assam","short_name":"AS","types":["administrative_area_level_1","political"]},{"long_name":"India","short_name":"IN","types":["country","political"]},{"long_name":"781022","short_name":"781022","types":["postal_code"]}],"formatted_address":"Mahapurush Srimanta Sankardeva Path, Jaya Nagar, Khanapara, Guwahati, Assam 781022, India","geometry":{"bounds":{"northeast":{"lat":26.1229256,"lng":91.82034120000002},"southwest":{"lat":26.1216483,"lng":91.8187281}},"location":{"lat":26.1222853,"lng":91.81953299999999},"location_type":"GEOMETRIC_CENTER","viewport":{"northeast":{"lat":26.1236359302915,"lng":91.82088363029152},"southwest":{"lat":26.1209379697085,"lng":91.81818566970851}}},"place_id":"ChIJE7wy_UxfWjcReOFKsRJcLbY","types":["route"]},{"address_components":[{"long_name":"Jaya Nagar","short_name":"Jaya Nagar","types":["political","sublocality","sublocality_level_2"]},{"long_name":"Khanapara","short_name":"Khanapara","types":["political","sublocality","sublocality_level_1"]},{"long_name":"Guwahati","short_name":"Guwahati","types":["locality","political"]},{"long_name":"Kamrup","short_name":"Kamrup","types":["administrative_area_level_2","political"]},{"long_name":"Assam","short_name":"AS","types":["administrative_area_level_1","political"]},{"long_name":"India","short_name":"IN","types":["country","political"]}],"formatted_address":"Jaya Nagar, Khanapara, Guwahati, Assam, India","geometry":{"bounds":{"northeast":{"lat":26.131154,"lng":91.82092899999999},"southwest":{"lat":26.1185207,"lng":91.801772}},"location":{"lat":26.1283426,"lng":91.8082767},"location_type":"APPROXIMATE","viewport":{"northeast":{"lat":26.131154,"lng":91.82092899999999},"southwest":{"lat":26.1185207,"lng":91.801772}}},"place_id":"ChIJx8tapjVfWjcRs-TGDEtAbBM","types":["political","sublocality","sublocality_level_2"]},{"address_components":[{"long_name":"Khanapara","short_name":"Khanapara","types":["political","sublocality","sublocality_level_1"]},{"long_name":"Guwahati","short_name":"Guwahati","types":["locality","political"]},{"long_name":"Kamrup","short_name":"Kamrup","types":["administrative_area_level_2","political"]},{"long_name":"Assam","short_name":"AS","types":["administrative_area_level_1","political"]},{"long_name":"India","short_name":"IN","types":["country","political"]}],"formatted_address":"Khanapara, Guwahati, Assam, India","geometry":{"bounds":{"northeast":{"lat":26.1335761,"lng":91.84463509999999},"southwest":{"lat":26.113873,"lng":91.80529299999999}},"location":{"lat":26.1245811,"lng":91.81113789999999},"location_type":"APPROXIMATE","viewport":{"northeast":{"lat":26.1335761,"lng":91.84463509999999},"southwest":{"lat":26.113873,"lng":91.80529299999999}}},"place_id":"ChIJt09fslNfWjcROcydXKwOx6U","types":["political","sublocality","sublocality_level_1"]},{"address_components":[{"long_name":"Guwahati","short_name":"Guwahati","types":["locality","political"]},{"long_name":"Kamrup","short_name":"Kamrup","types":["administrative_area_level_2","political"]},{"long_name":"Assam","short_name":"AS","types":["administrative_area_level_1","political"]},{"long_name":"India","short_name":"IN","types":["country","political"]}],"formatted_address":"Guwahati, Assam, India","geometry":{"bounds":{"northeast":{"lat":26.2172862,"lng":91.87591959999999},"southwest":{"lat":26.068811,"lng":91.5298462}},"location":{"lat":26.1445169,"lng":91.7362365},"location_type":"APPROXIMATE","viewport":{"northeast":{"lat":26.2172862,"lng":91.87591959999999},"southwest":{"lat":26.068811,"lng":91.5298462}}},"place_id":"ChIJ_zORfyhaWjcRMt5rQzITvSs","types":["locality","political"]},{"address_components":[{"long_name":"781022","short_name":"781022","types":["postal_code"]},{"long_name":"Kamrup Metropolitan","short_name":"Kamrup Metropolitan","types":["administrative_area_level_2","political"]},{"long_name":"India","short_name":"IN","types":["country","political"]}],"formatted_address":"781022, India","geometry":{"bounds":{"northeast":{"lat":26.1257268,"lng":91.87214829999999},"southwest":{"lat":26.0783427,"lng":91.788517}},"location":{"lat":26.1067034,"lng":91.8269573},"location_type":"APPROXIMATE","viewport":{"northeast":{"lat":26.1257268,"lng":91.87214829999999},"southwest":{"lat":26.0783427,"lng":91.788517}}},"place_id":"ChIJse4vwV9fWjcR2muXfkNA_fg","types":["postal_code"]},{"address_components":[{"long_name":"Kamrup Metropolitan","short_name":"Kamrup Metropolitan","types":["administrative_area_level_2","political"]},{"long_name":"Assam","short_name":"AS","types":["administrative_area_level_1","political"]},{"long_name":"India","short_name":"IN","types":["country","political"]}],"formatted_address":"Kamrup Metropolitan, Assam, India","geometry":{"bounds":{"northeast":{"lat":26.2506065,"lng":92.18670519999999},"southwest":{"lat":25.8408737,"lng":91.3577797}},"location":{"lat":26.0794316,"lng":91.63721500000001},"location_type":"APPROXIMATE","viewport":{"northeast":{"lat":26.2506065,"lng":92.18670519999999},"southwest":{"lat":25.8408737,"lng":91.3577797}}},"place_id":"ChIJKQvFYfZbWjcRZyoDLrT-9BY","types":["administrative_area_level_2","political"]},{"address_components":[{"long_name":"Assam","short_name":"AS","types":["administrative_area_level_1","political"]},{"long_name":"India","short_name":"IN","types":["country","political"]}],"formatted_address":"Assam, India","geometry":{"bounds":{"northeast":{"lat":27.968216,"lng":96.0131609},"southwest":{"lat":24.1384989,"lng":89.68563789999999}},"location":{"lat":26.2006043,"lng":92.9375739},"location_type":"APPROXIMATE","viewport":{"northeast":{"lat":27.968216,"lng":96.0131609},"southwest":{"lat":24.1384989,"lng":89.68563789999999}}},"place_id":"ChIJYy0xTMkWRTcR-xlnc7tzGtE","types":["administrative_area_level_1","political"]},{"address_components":[{"long_name":"India","short_name":"IN","types":["country","political"]}],"formatted_address":"India","geometry":{"bounds":{"northeast":{"lat":35.5087008,"lng":97.39535869999999},"southwest":{"lat":6.4626999,"lng":68.1097}},"location":{"lat":20.593684,"lng":78.96288},"location_type":"APPROXIMATE","viewport":{"northeast":{"lat":35.5087008,"lng":97.39498069999999},"southwest":{"lat":6.7535159,"lng":68.16288519999999}}},"place_id":"ChIJkbeSa_BfYzARphNChaFPjNc","types":["country","political"]}]

here is the code snippet

from pandas.io.json import json_normalize
import json
import numpy as np
line="JSON string" #for which the code doesn't works
data = json.loads(line)
result = json_normalize(data)
 def get_geometry_col(st):
        return result['geometry'].apply(json_normalize).apply(lambda df: df[st])

def get_cols(st):
    pol = []
    for i in result['address_components'].apply(json_normalize):
         pol.append(','.join(i.apply(lambda x : x['long_name'] if st in x['types'] else np.nan,1).dropna()))
    return  pol
result['location_type'] = get_geometry_col('location_type')
result['lat'] = get_geometry_col('location.lat') 
result['political'] = get_cols('political') 
result['country'] = get_cols('country') 

gives error

runfile('C:/Users/Admin1/Desktop/test_json.py', wdir='C:/Users/Admin1/Desktop')
Traceback (most recent call last):

  File "<ipython-input-9-a2117950798d>", line 1, in <module>
    runfile('C:/Users/Admin1/Desktop/test_json.py', wdir='C:/Users/Admin1/Desktop')

  File "C:\ProgramData\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 866, in runfile
    execfile(filename, namespace)

  File "C:\ProgramData\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "C:/Users/Admin1/Desktop/test_json.py", line 13, in <module>
    result = json_normalize(data,'results',['address_components'])

  File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\json.py", line 847, in json_normalize
    _recursive_extract(data, record_path, {}, level=0)

  File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\json.py", line 833, in _recursive_extract
    recs = _pull_field(obj, path[0])

  File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\json.py", line 784, in _pull_field
    result = result[spec]

KeyError: 'results'

Any suggestion on where changes can be made so as the code runs.

Thanks.

Domnick.


Solution

  • The second JSON doesn't have a results property, the records are at the top level of the data. So leave out the record_path argument to json_normalize().

    results = json_normalize(data, meta=['address_components'])