正则表达式从字符串中提取数字并根据日期逻辑将它们转换为浮点数

时间:2017-10-30 21:36:57

标签: python regex pandas

 7 months
 4 years 8 months
 1 year 7 months
 7 years 3 month
 6 months
<1 year
10+ years 

我有一个数据框,其中一列包含上面显示的数据。我想将其转换为以下输出

0.7
4.8
1.7
7.3
<.12
10.0+



df['years']=df['years'].replace(r'[years]','',regex=True)
df['years']=df['years'].replace(r'[months]','',regex=True)

我尝试过以上操作。 这种逻辑不能很好地运作。有没有办法用正则表达式做到这一点?

1 个答案:

答案 0 :(得分:0)

In [118]: to_repl = ['\s*([<>+\d]+)\s*year[s]?','\s*(\d+)\s*month[s]?']

In [119]: val = [r'\1',r'.\1']

In [120]: df['col'].replace(to_repl, val, regex=True).str.strip()
Out[120]:
0     .7
1    4.8
2    1.7
3    7.3
4     .6
5     <1
6    10+
Name: col, dtype: object