Как разделить несколько значений в столбцах и сгруппировать указанные значения в пандах? - PullRequest
1 голос
/ 08 апреля 2019

Я пытаюсь создать новый DataFrame, отделяя столбец с несколькими значениями, чтобы каждая строка имела только одно значение.

Я пробовал несколько групповых операций, но мне кажется, чтоневозможно разделить значения или упорядочить их по пользователям

 item    title   feature
0   1   ToyStory(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
item    feature
0   1   Adventure
1   1   Animation
2   1   Children
3   1   Comedy
4   1   Fantasy

1 Ответ

1 голос
/ 08 апреля 2019

Вам понадобится str.split, затем stack:

r = df.set_index('item').feature.str.split('|', expand=True).stack()
r.index = r.index.get_level_values(0)

r.reset_index(name='feature')

    item    feature
0      1  Adventure
1      1  Animation
2      1   Children
3      1     Comedy
4      1    Fantasy
5      2  Adventure
6      2   Children
7      2    Fantasy
8      3     Comedy
9      3    Romance
10     4     Comedy
11     4      Drama
12     4    Romance
13     5     Comedy

Другая опция использует np.repeat:

u = df.set_index('item').feature.str.split('|')
pd.DataFrame({
    'item': np.repeat(u.index, u.str.len()), 
    'feature': [y for x in u for y in x]
})

    item    feature
0      1  Adventure
1      1  Animation
2      1   Children
3      1     Comedy
4      1    Fantasy
5      2  Adventure
6      2   Children
7      2    Fantasy
8      3     Comedy
9      3    Romance
10     4     Comedy
11     4      Drama
12     4    Romance
13     5     Comedy
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...