是否有Python函数可以在不同条件下从字符串中提取数值?

时间:2019-06-08 15:21:03

标签: python-3.x dataframe data-science

我是Python的新手。有人帮助提取“ 3K”并通过将“ K”替换为“ 000”将其转换为“ 3000”。现在,我还有其他条件。我想从“超过4000”中提取数值,而我只想“ 4000”。如果有两个或两个以上的数字,例如“ 2050 – 3000”,我将采用最高的数字。

由于我也是Python数据框的新手,所以我无法提取数字并将其替换为新值的数据框。

仅接受数字值,不接受“ over4000”或“ 2000-3000”

1 个答案:

答案 0 :(得分:0)

使用正则表达式。

例如:

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