如何一行代码移除DataFrame列值首尾左方括号并解决正则替换报错
报错原因
[是正则表达式的特殊字符,用于标识字符集的起始位置,你写的正则只有单独的[没有对应闭合的],所以触发了unterminated character set报错。
解决方案
下面提供3种可直接运行的一行代码实现,均自动跳过NaN值,不会影响非object类型的列:
1. 正则转义匹配
给[加转义符并用原始字符串包裹,直接通过replace的正则模式替换:
df[cols_to_check] = df[cols_to_check].replace({r"\[" : ""}, regex=True)
2. 字面量替换(关闭正则)
用str.replace并指定regex=False,匹配字面量的[不需要转义:
df[cols_to_check] = df[cols_to_check].apply(lambda s: s.str.replace("[", "", regex=False))
3. 首尾括号批量移除(最优适配你的场景)
你的取值格式是首尾均为[,直接用str.strip指定要移除的字符即可,效率更高:
df[cols_to_check] = df[cols_to_check].apply(lambda s: s.str.strip("["))
内容的提问来源于stack exchange,提问作者Joseph Shuffield
相关产品推荐
相关产品推荐

