Есть ли функция Python для извлечения числовых значений из строки при различных условиях? - PullRequest
0 голосов
/ 08 июня 2019

Я новичок в Python.Кто-то помог с извлечением «3K» и преобразовал в «3000», заменив «K» на «000».Теперь у меня есть другие условия.Я хочу извлечь числовые значения из «более 4000», и я просто хочу «4000».Если есть два или более числа, например «2050 - 3000», я возьму наибольшее число.

Поскольку я также новичок в фрейме данных Python, я не смог извлечь числа и заменить его на фрейме данных новыми значениями.

Ожидаются только числовые значения, а НЕ "более 4000" или "2000 - 3000"

1 Ответ

0 голосов
/ 08 июня 2019

Использование Regex.

Ex:

import pandas as pd
import re

def process(val):
    m = re.match(r"(\d+)k", val, flags=re.I) 
    if m:
        return m.group(1) + "000"
    return max(re.findall(r"\d+", val))

df = pd.read_csv(filename, encoding='utf8') 
print(df["price"].apply(process).astype(int))

Выход:

0     4000
1     3000
2     3500
3     4000
4    35000
Name: price, dtype: int32
...