У меня есть фрейм данных, и один из столбцов содержит строки типа 'weak=30'
, и я хочу извлечь цифры после строки =
и создать новый столбец с именем digits
.
Я использую re.search
чтобы найти цифры, но пока что выдает ошибку.
Пример данных
import pandas as pd
import re
raw_data = {'patient': [1, 2, 3,4, 6],
'treatment': [0, 1, 0, 1, 0],
'score': ['strong=42', 'weak=30', 'weak=12', 'pitt=12', 'strong=42']}
df = pd.DataFrame(raw_data, columns = ['patient', 'treatment', 'score'])
df
patient treatment score
0 1 0 strong=42
1 2 1 weak=30
2 3 0 weak=12
3 4 1 pitt=12
4 6 0 strong=42
Итак, я попытался
df=df.assign(digits=[int(re.search(r'\d+', x)) for x in df.score])
TypeError: int () аргументдолжна быть строкой, байтовоподобным объектом или числом, а не 're.Match'
В R вы просто можете сделать
mutate(digits=as.numeric(gsub(".*=","",score))
Какой будет эквивалентная функцияв python pandas
?
Ожидаемый результат
patient treatment score digits
0 1 0 strong=42 42
1 2 1 weak=30 30
2 3 0 weak=12 12
3 4 1 pitt=12 12
4 6 0 strong=42 42