Как разбить длинные строки на столбцы pandas с помощью знаков препинания - PullRequest
4 голосов
/ 20 апреля 2020

У меня есть df, который выглядит следующим образом:

words                                              col_a   col_b  
I guess, because I have thought over that. Um,       1       0 
That? yeah.                                          1       1
I don't always think you're up to something.         0       1                                                       

Я хочу разбить df.words, где присутствует символ пунктуации (.,?!:;), в отдельный ряд. Однако я хочу сохранить значения col_b и col_b из исходной строки для каждой новой строки. Например, приведенный выше df должен выглядеть следующим образом:

words                                              col_a   col_b  
I guess,                                             1       0
because I have thought over that.                    1       0
Um,                                                  1       0 
That?                                                1       1
yeah.                                                1       1
I don't always think you're up to something.         0       1

1 Ответ

5 голосов
/ 20 апреля 2020

Один способ - использовать str.findall с шаблоном (.*?[.,?!:;]), чтобы сопоставить любой из этих знаков препинания и символов, предшествующих ему (не жадный), и взорвать результирующие списки:

(df.assign(words=df.words.str.findall(r'(.*?[.,?!:;])'))
   .explode('words')
   .reset_index(drop=True))

                                          words  col_a  col_b
0                                      I guess,      1      0
1             because I have thought over that.      1      0
2                                           Um,      1      0
3                                         That?      1      1
4                                         yeah.      1      1
5  I don't always think you're up to something.      0      1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...