Применить регулярное выражение к столбцу данных pandas - PullRequest
1 голос
/ 22 июня 2019

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

df["Details"] is my dataframe

df ["Details"] - мой фрейм данных, и он содержит некоторый текст, похожий на тот, что я создал ниже, в качестве деталей

import re
details = '1st: Batman 01:12.98 11.5L'

position = re.search('\w\w\w:\s', details)
distance = re.search('(\s\d\d.[0-9]L)', details)
time = re.search(r'\d{2}:\d{2}.\d{2}',details)

print(position.group(0))
print(distance.group(0))
print(time.group(0))
output is then 
    1st: 
    11.5L
    01:12.98

Я бы хотел добавить эти значения в новые столбцы.в кадре данных называется позиция, расстояние, время, соответственно совпадающие с выводом

Ответы [ 2 ]

2 голосов
/ 22 июня 2019

Я считаю, что вам нужно Series.str.extract:

details = '1st: Batman 01:12.98 11.5L'

df = pd.DataFrame({"Details":[details,details,details]})

df['position'] = df['Details'].str.extract(r'(\w\w\w:\s)')
df['distance'] = df['Details'].str.extract(r'(\s\d\d.[0-9]L)')
df['time'] = df['Details'].str.extract(r'(\d{2}:\d{2}.\d{2})')
print(df)

                      Details position distance      time
0  1st: Batman 01:12.98 11.5L    1st:     11.5L  01:12.98
1  1st: Batman 01:12.98 11.5L    1st:     11.5L  01:12.98
2  1st: Batman 01:12.98 11.5L    1st:     11.5L  01:12.98
0 голосов
/ 22 июня 2019

Применение экстракта в лямбда-функции:

df['position'] = df['Details'].apply(lambda x: str(x).extract(r'(\w\w\w:\s)')))
df['distance'] = df['Details'].apply(lambda x: str(x).extract(r'(\s\d\d.[0-9]L)'))
df['time'] = df['Details'].apply(lambda x: str(x).extract(r'(\d{2}:\d{2}.\d{2})'))

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