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

Панды нуб здесь.Как лучше всего удалить записи каждой команды и поместить ее в новый столбец?Заранее спасибо!

    Rank    Team    
0   1       LA Rams (5-0)   
1   2       New Orleans (4-1)   
2   3       New England (3-2)   
3   4       Kansas City (5-0)   
4   5       Pittsburgh (2-2-1)  
5   6       Baltimore (3-2) 

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

Другой способ без использования трюка с регулярными выражениями.

df[['Team Name', 'Team Records']] = d.Team.apply(lambda x: pd.Series(x.rstrip(')').split(' (')))
df.drop('Team', axis=1, inplace=True)
0 голосов
/ 14 октября 2018

Интересный вопрос.

К сожалению, Series.str.extract получит запись довольно легко, но не удалит ее (используя наивное регулярное выражение, не стесняйтесь использовать более сложное весли команда имеет (...) в своем названии):

df['Record'] = df['Team'].str.extract('(\(.*?\))')
print(df)
#    Rank                Team   record
#  0    1       LA Rams (5-0)    (5-0)
#  1    2   New Orleans (4-1)    (4-1)
#  2    3   New England (3-2)    (3-2)
#  3    4   Kansas City (5-0)    (5-0)
#  4    5  Pittsburgh (2-2-1)  (2-2-1)
#  5    6     Baltimore (3-2)    (3-2)

Это потребует реализации нашей собственной функции:

import re

record_regex = re.compile(r'(\(.*?\))')

records = []

def extract_and_remove_record(x):
    record = record_regex.findall(x)[0]
    records.append(record)
    return record_regex.sub('', x)

df['Team'] = df['Team'].apply(extract_and_remove_record)
df['Record'] = records

print(df)
#    Rank          Team  Records
#  0    1      LA Rams     (5-0)
#  1    2  New Orleans     (4-1)
#  2    3  New England     (3-2)
#  3    4  Kansas City     (5-0)
#  4    5   Pittsburgh   (2-2-1)
#  5    6    Baltimore     (3-2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...