python - 用条件替换单词
问题描述
我需要检查一行是否包含一个数字 (n)、一个空格和列表中的一个单词(house、houses、casa、case),以便将其替换为
10.00
如果数字等于1
;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
我尝试混合使用re.search
查看列表(房屋,房屋,案例,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
推荐阅读
- python - 如何使用 feedparser 在 tkinter 文本小部件中添加文本链接?
- python - 量子隐形传态之前 qbit 崩溃
- angular - 在 CKEditor 5 中保留标准插件的样式属性
- javascript - 如何在javascript中使用模型函数?
- elixir - 无法编译依赖项:salty,“混合编译”失败。**(混合)无法使用“make”编译(退出状态:2)
- c++ - 是否可以在 C++ 中的类对象中添加整数类型值?
- python-3.x - 协议 = 4 泡菜(python 3.7):加载具有相同键的字典时出现键错误
- c# - 基于角色的授权属性在 ASP.NET Core MVC 中不起作用
- haskell - zipWith如何用foldr实现?
- nim-lang - 如何在 Nim 中编写类似于 `echo` 的函数?