J'ai le Dataframe suivant. Colonne Genres est une liste de plusieurs dictionnaires.
Title Name Avatar Action Avatar Adventure Avatar Fantasy Avatar Science Fiction Pirates.. Adventure Pirates.. Fantasy ...
4 Réponses :
title genres 0 Avatar Action 0 Avatar Adventure 0 Avatar Fantasy 0 Avatar Science Fiction 1 Pirates of the Caribbean: At World's End Adventure 1 Pirates of the Caribbean: At World's End Fantasy 1 Pirates of the Caribbean: At World's End Action 2 Spectre Action 2 Spectre Adventure 2 Spectre Crime 3 The Dark Knight Rises Action 3 The Dark Knight Rises Crime 3 The Dark Knight Rises Drama 3 The Dark Knight Rises Thriller 4 John Carter Action 4 John Carter Adventure 4 John Carter Science Fiction
Je me demande comment avez-vous obtenu ces titre code> et
genres code> pour commencer? Par la main? Modification de l'OP?
@Sergeybushmanov Oui, je devais. Il aurait été plus facile si je pouvais utiliser pd.read_clipboard code> ou
stringio code>
Merci beaucoup. Cela fonctionne, maintenant j'essaie de comprendre comment ce travail en expansion.
Supposons que nous ayons un df: alors nous pouvons faire: p>
Oh, df.explode code> au lieu d'exploser une série! +1
Désolé, lorsque j'utilise Atkilat90's Dataframe, votre cordon fonctionne parfaitement bien. Mais quand je crée mon Dataframe à partir de mon fichier de données original avec 'df = imdb [["Titre",' Genres ']]] "Ensuite, j'obtiens" Les indices de chaîne doivent être des erreurs d'entiers de votre code à partir de votre code. Pouvez-vous penser à une raison? Merci!
Comment créez-vous votre Dataframe IMDB? Si vous lisez vos données du disque, vous devez utiliser importer ast; imdb = pd.read_csv (filepath, converties = {"Genres": ast.literal_eval}); code>. Sinon, vous obtiendrez une liste de dictionnaires comme une chaîne. D'où votre erreur.
Woww. Merci beaucoup. Je comprends ça. Je pouvais voir la différence savoir lors de la vérification du type d'une ligne de série de genres. Avec votre méthode, je reçois une liste, sinon juste une chaîne.
Je ferais cela:
df.melt(id_vars="title",value_vars=df.columns[1:],value_name="name")[["title","name"]].dropna().set_index("title").sort_index() name title Avatar Action Avatar Adventure Avatar Fantasy Avatar Science Fiction Spectre Action Spectre Adventure Spectre Crime
for index, row in df.iterrows(): title = row['title'] gn = row['genres'] genres = ast.literal_eval(gn) for i in range(0, len(genres)): r_list = [] r_list.append(title) r_list.append(genres[i]['name']) df_list.append(r_list) out_df = pd.DataFrame(df_list,columns=['Title','Name']) print(out_df.head)
S'il vous plaît, montrez-nous ce que vous avez essayé jusqu'à présent. De cette façon, les gens peuvent vous aider avec le problème efficacement.
Après avoir pensé et googling pendant 2 heures, je n'ai malheureusement aucune idée de la façon de vous approcher. Comment puis-je clarifier plus ce dont j'ai besoin?
D'où vient ces données, pourquoi est-ce dans le Dataframe comme ça?
J'ai téléchargé un fichier CSV de kaggle.com. Le format est apparemment dans cette forme déjà dans le fichier CSV.