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)
我尝试过以上操作。 这种逻辑不能很好地运作。有没有办法用正则表达式做到这一点?
答案 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