Разделить столбец данных с регулярным выражением - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь разбить столбец с определенным разделителем, например: '|'.

Мои данные выглядят так, у меня есть ТОЛЬКО ОДНА КОЛОННА с именем "ID", которая содержит те строки, которые я хочуразделить на основе разделителя "|"

ID accountsummary            | Name: Report Suite Totals 

ID activity                  | Name: Activity 

Я пробовал 2 разных подхода:

  1. dataframe_elements_int[['ID', 'Name']] = \
        dataframe_elements_int['ID'].str.rsplit('|', expand=True, n=1)
    

Что дает мнеследующая ошибка: ValueError: Columns must be same length as key

dataframe_final[['Id','Name']] = \
    dataframe_elements_int['ID'].str.extract('(\w*)\|(\w*)', expand=True)

Что дает мне следующую ошибку: ValueError: pattern contains no capture groups

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Вы можете использовать следующее регулярное выражение:

ID\s+(\w+)\s+|\s+Name:\s+(.*)$

Если вы хотите использовать экстракт, выполните следующие действия:

import pandas as pd

df = pd.DataFrame(data=["ID accountsummary            | Name: Report Suite Totals",
                        "ID activity                  | Name: Activity"], columns=["ID"])
pattern = r"ID\s+(?P<IDnew>\w+)"
df["NewId"] = df["ID"].str.extract(pattern)
pattern = r"Name:\s+(?P<Name>.*)$"
df["Name"] = df["ID"].str.extract(pattern)
df.drop(["ID"], axis=1, inplace=True)
df.rename({"NewId": "ID"})
0 голосов
/ 12 декабря 2018

Можно попробовать

df=dataframe_elements_int
#split the column
df['new_ID'], df['Name'] = df['ID'].str.split('|').str
#filtering the Name and ID 
df['Name']=df['Name'].str.extract(r'((?<=Name:).*$)', expand=True)
df['new_ID']=df['new_ID'].str.extract(r'((?<=ID).*$)',expand=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...