Pandas用replace无法移除货币列前缀$与后缀F,正则哪里出错?
正则表达式错误点
- 符号转义错误:
$在正则中是匹配字符串结尾的特殊元字符,要匹配字面量$需要用反斜杠转义为\$,你写的$$、/都属于无效转义写法,还额外加了不需要匹配的/字符,自然匹配不到目标内容 - 匹配逻辑错误:你写的正则
^/$$[F]逻辑是「匹配开头的/+结尾+结尾+单个F」,和你要匹配「开头的$、结尾的F」的需求完全不符 - 缺少逻辑或规则:你要同时匹配前缀和后缀两种不同位置的字符,需要用
|表示或逻辑,分别匹配开头的$和结尾的F - 额外注意:pandas的
replace默认返回新的Series对象,如果你没有赋值回原列,原数据也不会发生修改
正确实现代码
# 正则r"^\$|F$" 表示匹配开头的$ 或者 结尾的F,替换为空后转成浮点型方便后续计算 df["Price"] = df["Price"].replace(r"^\$|F$", "", regex=True).astype("float")
内容的提问来源于stack exchange,提问作者sayth
相关产品推荐
相关产品推荐

