Python 用条件替换单词
我需要检查一行是否包含数字n、空格和列表house、houses、casa、case中的单词,以便将其替换为 如果数字等于1,则为10.00; 10.00*n,其中n是不等于1的数字。 例如: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
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抱歉,是我错过了这些箱子。请参阅更新。