Python 用条件替换单词

Python 用条件替换单词,python,regex,pandas,Python,Regex,Pandas,我需要检查一行是否包含数字n、空格和列表house、houses、casa、case中的单词,以便将其替换为 如果数字等于1,则为10.00; 10.00*n,其中n是不等于1的数字。 例如: 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

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

如果数字等于1,则为10.00; 10.00*n,其中n是不等于1的数字。 例如:

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
我曾尝试使用混合搜索来查看列表house、house、case、casa和strip以添加.00,但我不知道如何使用它来确定条件10.00和10.00*n

我希望你能帮助我

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

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

为什么第二行9的间隔没有改变?4的大小写应该在输出中变成4的间隔吗?这似乎不符合你的逻辑对不起,是我的错。第一个字是预期输出中的大小写!你还没有回答@Quang的问题。还有,新高中是从哪里来的?我对这个问题投了否决票,但如果你通过编辑澄清这个问题,我会将其推翻。我不理解你的问题。9是该行的值。它不会更改,因为它未包含在列表中。New_H_C是一个新列,我在更新值后在其中保存值。我不明白为什么你否决了一个已经得到很好答案的问题,这意味着一些用户正确理解了我的问题。如果有时我可能不太清楚,我很抱歉,但英语不是我的第一语言谢谢你@Quang Hoang。我怎么能在最后得到点?我需要这个format@LucaDiMauro见更新。请记住,现在您在New_H__C中拥有了所有字符串。非常感谢您的帮助。真的很感激你,我一直在努力理解你的代码。我想问你一些关于代码的问题,我是Python的新手。如果我不得不用20替换1栋房子,用20*n替换4栋房子,我应该修改什么部分?@LucaDiMauro抱歉,是我错过了这些箱子。请参阅更新。