J'ai un jeu de données qui a le titre de film avec les différents genres qu'il relevait. Chaque film a plus d'un genre. Par conséquent, pour l'ensemble du jeu de données, je souhaite trouver le nombre total de genres uniques présents.
Je ne suis pas en mesure d'utiliser df.unique () code> telle qu'il s'agit d'une liste dans chaque colonne de le Dataframe lui-même. P>
movieId title genres
0 1 Toy Story (1995) Adventure|Animation|Children|Comedy|Fantasy
1 2 Jumanji (1995) Adventure|Children|Fantasy
2 3 Grumpier Old Men (1995) Comedy|Romance
3 4 Waiting to Exhale (1995) Comedy|Drama|Romance
4 5 Father of the Bride Part II (1995) Comedy
5 6 Heat (1995) Action|Crime|Thriller
6 7 Sabrina (1995) Comedy|Romance
7 8 Tom and Huck (1995) Adventure|Children
8 9 Sudden Death (1995) Action
9 10 GoldenEye (1995) Action|Adventure|Thriller
10 11 American President, The (1995) Comedy|Drama|Romance
11 12 Dracula: Dead and Loving It (1995) Comedy|Horror
12 13 Balto (1995) Adventure|Animation|Children
13 14 Nixon (1995) Drama
14 15 Cutthroat Island (1995) Action|Adventure|Romance
15 16 Casino (1995) Crime|Drama
16 17 Sense and Sensibility (1995) Drama|Romance
17 18 Four Rooms (1995) Comedy
18 19 Ace Ventura: When Nature Calls (1995) Comedy
19 20 Money Train (1995) Action|Comedy|Crime|Drama|Thriller
20 21 Get Shorty (1995) Comedy|Crime|Thriller
21 22 Copycat (1995) Crime|Drama|Horror|Mystery|Thriller
22 23 Assassins (1995) Action|Crime|Thriller
23 24 Powder (1995) Drama|Sci-Fi
24 25 Leaving Las Vegas (1995) Drama|Romance
25 26 Othello (1995) Drama
26 27 Now and Then (1995) Children|Drama
27 28 Persuasion (1995) Drama|Romance
28 29 City of Lost Children, The (Cité des enfants p...
3 Réponses :
Vous pouvez le faire comme suit: sortie: p>
Cela a également fonctionné bien. Mais celui donné par Ashish14 semblait être plus rapide. Merci quand même!
Essayez d'utiliser cette approche:
temp = df.genres.str.split("|").tolist() # this will return a list of lists for all the genres import functools import operator unique_genres = set(functools.reduce(operator.concat, temp)) #this will flatten the list of lists and ultimately call the set to get the unique genres. Use len to get the number of unique genres afterwards
essayer suivi:
df = pda.read_csv('movies.csv') df['genres'] = df['genres'].apply(lambda x: x.strip().split('|')) df['count'] = df['genres'].apply(lambda y: len(y)) print(df) OUTPUT : movie Id ... genres count 0 1 ... [Adventure, Animation, Children, Comedy, Fantasy] 5 1 2 ... [Adventure, Children, Fantasy] 3 2 3 ... [Comedy, Romance] 2 3 4 ... [Comedy, Drama, Romance] 3 4 5 ... [Comedy] 1 5 6 ... [Action, Crime, Thriller] 3
Avez-vous essayé d'abord de collecter toutes les colonnes de genres dans un tableau, puis appelez le .unique ()?
Non pas encore. Je suis plutôt nouveau à Python, je ne connais donc pas ça. Je vais essayer.
J'ai essayé cela, ça a fonctionné. Mais cela a juste pris le temps de courir. Merci!
Heureux ça fonctionnait! De toute façon, la réponse Akshaynevrekar semble être meilleure