Измените содержимое столбца панд регулярным выражением - PullRequest
0 голосов
/ 19 января 2019

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

Other via Other on 17 Jan   2019 
Other via Other on 17 Jan   2019 
Interview via E-mail    on  14  Dec 2018
Rejected via    E-mail  on  15  Jan 2019
Rejected via    E-mail  on  15  Jan 2019
Rejected via    E-mail  on  15  Jan 2019
Rejected via    E-mail  on  15  Jan 2019
Interview via   E-mail  on  14  Jan 2019
Rejected via Website on 12 Jan  2019

Можно ли разделить этот столбец на два: один - что угодно до "через", а другой - что угодно после "вкл"? Спасибо!

Ответы [ 2 ]

0 голосов
/ 19 января 2019

Вы можете в значительной степени использовать split () как df.col.str.split('via|on',expand=True)[[0,2]:

Позволяет подробнее ........

Воспроизведение вашего фрейма данных:

>>> df
                                        col
0         Other via Other on 17 Jan   2019
1         Other via Other on 17 Jan   2019
2  Interview via E-mail    on  14  Dec 2018
3  Rejected via    E-mail  on  15  Jan 2019
4  Rejected via    E-mail  on  15  Jan 2019
5  Rejected via    E-mail  on  15  Jan 2019
6  Rejected via    E-mail  on  15  Jan 2019
7  Interview via   E-mail  on  14  Jan 2019
8      Rejected via Website on 12 Jan  2019

Давайте рассмотрим здесь. Сначала разбиваем весь столбец на основе требуемых строк via и on, которые разбивают весь столбец col на три отдельных разделенных столбца 0 1 2, где 0 будет до строка via & 2 будет после строки on, а остаток будет средним, то есть столбцом 1, который нам не нужен.

Итак, мы можем взять на себя свободу и выбрать только столбцы 0 & 2 следующим образом.

>>> df.col.str.split('via|on',expand=True)[[0,2]]
            0                2
0      Other    17 Jan   2019
1      Other    17 Jan   2019
2  Interview      14  Dec 2018
3   Rejected      15  Jan 2019
4   Rejected      15  Jan 2019
5   Rejected      15  Jan 2019
6   Rejected      15  Jan 2019
7  Interview      14  Jan 2019
8   Rejected      12 Jan  2019

Лучше назначить новый фрейм данных и переименовать столбцы:

Результат:

newdf = df.col.str.split('via|on',expand=True)[[0,2]]
newdf.rename(columns={0: 'col1', 2: 'col2'}, inplace=True)
print(newdf)

         col1             col2
0      Other      17 Jan   2019
1      Other      17 Jan   2019
2  Interview      14  Dec 2018
3   Rejected      15  Jan 2019
4   Rejected      15  Jan 2019
5   Rejected      15  Jan 2019
6   Rejected      15  Jan 2019
7  Interview      14  Jan 2019
8   Rejected      12 Jan  2019
0 голосов
/ 19 января 2019

Использовать str.extract

df[['col1', 'col2']] = df.col.str.extract('(.*)\svia.*on\s(.*)', expand = True)

    col1        col2
0   Other       17 Jan 2019
1   Other       17 Jan 2019
2   Interview   14 Dec 2018
3   Rejected    15 Jan 2019
4   Rejected    15 Jan 2019
5   Rejected    15 Jan 2019
6   Rejected    15 Jan 2019
7   Interview   14 Jan 2019
8   Rejected    12 Jan 2019
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...