группа pandas фрейм данных по абзацу - PullRequest
0 голосов
/ 16 июня 2020

У меня есть Pandas Dataframe с одним столбцом с текстом. В Dataframe есть строки с разрывами строк (\ n). Теперь я хочу сгруппировать все строки между двумя разрывами строк. пример:

text_column
this is text
this is a new line

here starts a new paragraph
new line of new paragraph

next paragraph
...

Я попытался пометить строки с помощью разрывов строк:

txt["doc"]=txt.text.str.match('\n')

Эта команда дает мне новый столбец с истиной / ложью. Я не этого хочу. Ищу вот такой результат:

text_column                                              paragraph
this is text this a new line                                 1
here starts a new paragraph new line of new paragraph        2
next paragraph                                               3

Надеюсь, кому-то поможет.

Спасибо.

1 Ответ

2 голосов
/ 16 июня 2020

Если каждая пустая строка содержит \n, используйте только cumsum для совокупной суммы и переходите к groupby для совокупности join, последним удалите возможные конечные пробелы и абзац и добавьте новый столбец:

df = (txt.groupby(txt.text.str.match('\n').cumsum())['text']
         .agg(' '.join).str.strip().reset_index(drop=True).to_frame()
         .assign(paragraph = lambda x: range(1, len(x)+1)))

print (df)
                                                text  paragraph
0                    this is text this is a new line          1
1  here starts a new paragraph new line of new pa...          2
2                                     next paragraph          3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...