Я пытаюсь извлечь строковый шаблон из нескольких столбцов в один столбец результатов, используя Pandas и str.extract.
Мой примерный кадр данных выглядит следующим образом.
field1 field2
ab1234 ab1234
ac1234
qw45 rt23
c1234b cb1234
cv 1234dd
...
Я хочу извлечь '1234' (РЕДАКТИРОВАТЬ: любое 4-значное целое число, а не просто '1234') из любого столбца (в данном случае field1 и field2) в новый столбец результатов, чтобы получить желаемый результат ниже
field1 field2 result
ab1234 ab1234 1234
ac1234 1234
qw45 rt23
c1234b cb1234 1234
cv 1234dd 1234
...
Я пытаюсь использовать pandas str.extract для получения желаемого результата, однако я потерпел неудачу следующим образом.
import pandas as pd
import numpy as np
import re
df = pd.DataFrame({'field1':['ab1234','ac1234','qw45', 'c1234b', 'cv'],
'field2':['ab1234','','rt23','cb1234', '1234dd']})
df['result'] = df[['field1', 'field2']].apply(lambda x:
x.str.extract(r'(\d{4})', flags = re.IGNORECASE, expand =
False)).any(axis=1)
print(df)
Выше приведены только логические результаты. Мне интересно, можно ли преобразовать вышеперечисленное для возврата фактического шаблона или есть другие способы решения этой проблемы?
Большое спасибо заранее.
РЕДАКТИРОВАТЬ: Извините, я должен отметить, что шаблон может быть любым 4-значным целым числом, а не просто «1234». Таким образом, я хочу, чтобы столбец результата возвращал эти 4 цифры.