Разделение столбца и присвоение одному и тому же фрейму данных - PullRequest
0 голосов
/ 14 октября 2018

У меня есть набор данных для рекомендаций по фильмам, и я хочу разделить жанровую особенность на две колонки жанра (genre_1, genre_2) и назначить ее в одном и том же кадре данных.Колонка объединяет все жанры и разделяет их знаком '|'.Если у него нет двух жанров, то genre_1 нужно назначить genre_2.

Каков наилучший способ сделать это?

     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

Спасибо

Ответы [ 3 ]

0 голосов
/ 14 октября 2018

Как и предлагается в комментарии, вы должны предоставить пример результата, который вы ищете, это не совсем понятно из вашего вопроса.

В любом случае, вы можете разбить список жанров на отдельные столбцы, используя:

df['genres'].str.split('|',expand=True)

Например:

df['genres']
Out[13]: 
0    Adventure|Animation|Children|Comedy|Fantasy
1                     Adventure|Children|Fantasy
2                                 Comedy|Romance
3                           Comedy|Drama|Romance
4                                         Comedy


df['genres'].str.split('|',expand=True)
Out[14]: 
           0          1         2       3        4
0  Adventure  Animation  Children  Comedy  Fantasy
1  Adventure   Children   Fantasy    None     None
2     Comedy    Romance      None    None     None
3     Comedy      Drama   Romance    None     None
4     Comedy       None      None    None     None

.str говорит пандам обрабатывать этот столбец как строку, и тогда у вас есть большинство доступных методов Python для работы со строками.

expand = True приводит к тому, что каждое разделение сохраняется в отдельном столбце.

0 голосов
/ 01 ноября 2018

Спасибо за ответы, я решил эту проблему следующим образом.(получил помощь от другого друга.)

    df['genre_1'],df['genre_2'],df['genre_3'] = df.genres.str.split('|',2).str
    df['genre_2'] = df['genre_2'].fillna(df['genre_1'])
    df= df.drop('genre_3',axis=1)
0 голосов
/ 14 октября 2018

Функция разбиения будет разбирать эту строку, когда задано '|'в качестве разделителя.Совет для профессионалов: хранение жанров в виде списка будет работать намного лучше, чем хранение их в виде двух переменных;вы можете перебирать список вместо того, чтобы называть каждую переменную, и если какой-то щелчок считается более чем двумя жанрами, вы свободны дома.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...