Ключевая ошибка pandas: («production_countries», «произошел в index для взрослых») - PullRequest
0 голосов
/ 20 апреля 2020

Я написал функцию cleanup () , чтобы привести в порядок беспорядочные данные в некоторых столбцах моего df:

def cleanup(df,column):
    regex = df[column].str.findall(r"('name': '[\w\s]+')")
    for i in range(len(df[column])):
        df[column][i] = [regex[i][x].split(":")[1].strip().strip("''") for x in range(len(regex[i]))]
    return df

Чем удобнее читать Dataframe:

{'adult': {0: 'False', 1: 'False', 2: 'False', 3: 'False', 4: 'False'},
 'budget': {0: '30000000', 1: '65000000', 2: '0', 3: '16000000', 4: '0'},
 'genres': {0: "[{'id': 16, 'name': 'Animation'}, {'id': 35, 'name': 'Comedy'}, {'id': 10751, 'name': 'Family'}]",
  1: "[{'id': 12, 'name': 'Adventure'}, {'id': 14, 'name': 'Fantasy'}, {'id': 10751, 'name': 'Family'}]",
  2: "[{'id': 10749, 'name': 'Romance'}, {'id': 35, 'name': 'Comedy'}]",
  3: "[{'id': 35, 'name': 'Comedy'}, {'id': 18, 'name': 'Drama'}, {'id': 10749, 'name': 'Romance'}]",
  4: "[{'id': 35, 'name': 'Comedy'}]"},
 'id': {0: '862', 1: '8844', 2: '15602', 3: '31357', 4: '11862'},
 'original_language': {0: 'en', 1: 'en', 2: 'en', 3: 'en', 4: 'en'},
 'popularity': {0: 21.946943,
  1: 17.015539,
  2: 11.7129,
  3: 3.859495,
  4: 8.387519000000001},
 'production_companies': {0: "[{'name': 'Pixar Animation Studios', 'id': 3}]",
  1: "[{'name': 'TriStar Pictures', 'id': 559}, {'name': 'Teitler Film', 'id': 2550}, {'name': 'Interscope Communications', 'id': 10201}]",
  2: "[{'name': 'Warner Bros.', 'id': 6194}, {'name': 'Lancaster Gate', 'id': 19464}]",
  3: "[{'name': 'Twentieth Century Fox Film Corporation', 'id': 306}]",
  4: "[{'name': 'Sandollar Productions', 'id': 5842}, {'name': 'Touchstone Pictures', 'id': 9195}]"},
 'production_countries': {0: "[{'iso_3166_1': 'US', 'name': 'United States of America'}]",
  1: "[{'iso_3166_1': 'US', 'name': 'United States of America'}]",
  2: "[{'iso_3166_1': 'US', 'name': 'United States of America'}]",
  3: "[{'iso_3166_1': 'US', 'name': 'United States of America'}]",
  4: "[{'iso_3166_1': 'US', 'name': 'United States of America'}]"},
 'release_date': {0: '1995-10-30',
  1: '1995-12-15',
  2: '1995-12-22',
  3: '1995-12-22',
  4: '1995-02-10'},
 'revenue': {0: 373554033.0,
  1: 262797249.0,
  2: 0.0,
  3: 81452156.0,
  4: 76578911.0},
 'runtime': {0: 81.0, 1: 104.0, 2: 101.0, 3: 127.0, 4: 106.0},
 'status': {0: 'Released',
  1: 'Released',
  2: 'Released',
  3: 'Released',
  4: 'Released'},
 'title': {0: 'Toy Story',
  1: 'Jumanji',
  2: 'Grumpier Old Men',
  3: 'Waiting to Exhale',
  4: 'Father of the Bride Part II'},
 'vote_average': {0: 7.7, 1: 6.9, 2: 6.5, 3: 6.1, 4: 5.7},
 'vote_count': {0: 5415.0, 1: 2413.0, 2: 92.0, 3: 34.0, 4: 173.0}}

Когда я вызываю функцию с apply (), она говорит:

KeyError: ('production_countries', 'occurred at index adult')

Может кто-нибудь сказать мне, почему она дает мне эту ошибку? Потому что, когда я вызываю функцию без применения, например:

cleanup(df,"production_countries")

Это дает мне еще одну ошибку, говоря:

object of type 'float' has no len()

Но сейчас я просто хочу знать, почему применение не работает, спасибо

...