Я пытаюсь объединить два кадра данных о фильмах в заголовках столбцов.К сожалению, у них нет общих индексов, они упорядочены по-разному и не содержат одинаковых фильмов.Я очистил названия достаточно, чтобы я мог сравнить их и определить, являются ли они приемлемо похожими, чтобы называться одним и тем же фильмом.После этого сравнения я пытаюсь установить эти «совпадающие» заголовки равными eachother (беря заголовок из df2 и перезаписывая его эквивалент в df), но я не могу заставить его работать.
Этоdf.head (10)
Unnamed: 0 title imdb_id \
72 72 Gully Boy tt2395469
767 767 Long Shot tt2139881
1000 1000 Little tt8085790
1285 1285 Dumbo tt3861390
1342 1342 Don"t Stop Me Now tt9260446
1358 1358 How to Train Your Dragon: The Hidden World tt2386490
1621 1621 Captive State tt5968394
1658 1658 Spider-Man: Far from Home tt6320628
1944 1944 Avengers: Endgame tt4154796
1946 1946 Captain Marvel tt4154664
Это df2.head (10)
Unnamed: 0 bo_year_rank title \
7455 0 1 Avengers Endgame
7456 1 2 The Lion King
7457 2 3 Captain Marvel
7458 3 4 Spider-Man Far from Home
7459 4 5 Toy Story 4
7460 5 6 Aladdin
7461 6 7 Fast Furious Presents Hobbs Shaw
7462 7 8 The Wandering Earth
7463 8 9 Ne Zha
7464 9 10 How to Train Your Dragon The Hidden World
Функция сравнения, которую я использую:
def fix_stupid_titles(title, list_titles, min_score=0):
# -1 score incase we don't get any matches
max_score = -1
# Returning empty name for no match as well
max_title = ""
# Iterating over all names in the other
for title2 in list_titles:
#Finding fuzzy match score
score = fuzz.ratio(title, title2)
# Checking if we are above our threshold and have a better score
if (score > min_score) & (score > max_score):
max_title = title2
max_score = score
return (title, max_title, max_score)
Моя мысльсостоит в том, чтобы перебрать один кадр данных и применить функцию stupid_titles для проверки сходства, но тогда я не уверен, как обновить заголовки, чтобы они были равны.
for i, title in enumerate(df.title):
thing=fix_stupid_titles(title, df2.title, min_score=75)
#thing saves the return of the functoin (title, max_title, score)
df['title'][thing[1]]=thing[0]
Я хочу, чтобы заголовки в df
перезаписывайте заголовки из df2
, когда функция определяет, что они похожи.
Любая помощь будет принята с благодарностью!Или предложения о том, как сделать это более эффективно.Спасибо!