首页 > 解决方案 > 用条件替换单词

问题描述

我需要检查一行是否包含一个数字 (n)、一个空格和列表中的一个单词(house、houses、casa、case),以便将其替换为

例子:

H_C
4 case        
9 apart          
1 house    

预期产出

H_C              New_H_C
4 case          40.00  
9 apart          9 apart
1 house          10.00

我尝试混合使用re.search查看列表(房屋,房屋,案例,casa)和strip添加.00,但我对如何使用它来确定条件10.0010.00*n.

我希望你能帮助我。

标签: pythonregexpandas

解决方案


您可以执行此正则表达式:

words = ['house', 'houses', 'casa', 'case']

# extract the relevant numbers
s = df.H_C.str.extract(f'(\d+) ({"|".join(words)})')[0].astype(float)
# multiply with 20

# you can search for `format` string function
df['New_H_C'] = np.where(s.notna(),s.apply(lambda x:'{:.02f}'.format(x)), 
                         df['H_C'])

输出:

       H_C  New_H_C
0   4 case     4.00
1  9 apart  9 apart
2  1 house     1.00

推荐阅读