Pandas разбить на столбцы с регулярным выражением - PullRequest
2 голосов
/ 19 июня 2020

У меня что-то вроде этого У меня есть такой столбец в DataFrame

Column1
message1 message2 notmessage
message1 message2 
message1 message2 message3 notmessage

Мне нужен фрейм данных, например:

Column1                                 |  A        | b        | c
message1 message2 notmessage            |  message1 | message2 | null
message1 message2                       |  message1 | message2 | null
message1 message2 message3 notmessage   |  message1 | message2 | message3 

Нет проблем с получением первого значения из Column1 с использованием

df['A'] = df['Column1'].str.extract('(my_regex)',expand=True)

Но как я могу получить 3 новых столбца? Я пытался использовать это: { ссылка } у меня это сработало, когда я использовал метод разделения в других файлах, но он не работает для меня с разделением регулярных выражений, как показано ниже:

df.join(df['Column1'].str.extract('(my_regex)',expand=True).rename(columns={0:'A', 1:'B', 2:'C'}))

Пожалуйста, помогите :)

Ответы [ 2 ]

1 голос
/ 19 июня 2020

Я считаю, что вам нужно Series.str.extractall с выбором первого столбца 0 и изменением формы на Series.unstack:

d = {0:'A', 1:'B', 2:'C'}
df = df.join(df['Column1'].str.extractall('(my_regex)')[0].unstack().rename(columns=d))
0 голосов
/ 19 июня 2020

Получить все 3 столбца:

import pandas as pd

df = pd.DataFrame(["message1 message2 notmessage",
                   "message1 message2",
                   "message1 message2 message3 notmessage"
                   ],
                  columns=["Column1"]
                  )

df['A'] = df['Column1'].str.extract('(^\w+)',
                                    expand=True
                                    )

df['b'] = df['Column1'].str.extract('(?<=\s)(\w+).*',
                                    expand=True
                                    )

df['c'] = df['Column1'].str.extract('(\w+3).*',
                                    expand=True
                                    )

print(df)

Результат:

                                 Column1         A         b         c
0           message1 message2 notmessage  message1  message2       NaN
1                      message1 message2  message1  message2       NaN
2  message1 message2 message3 notmessage  message1  message2  message3

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