如何在Pandas DataFrame中精准替换指定内容而非全局替换?
解决Pandas DataFrame中特定//替换问题
你可以使用正则表达式的负向断言来精准替换目标内容,避免影响网址里的//。具体做法是只匹配前面没有冒号的//,这样就能跳过https://这类协议中的斜杠。
代码实现
import pandas as pd # 示例DataFrame data = {'Col': ['N//A', 'P//D', 'https://cg.com', 'C//A']} df = pd.DataFrame(data) # 精准替换:仅替换前面无冒号的//为/ df['Col'] = df['Col'].str.replace(r'(?<!:)//', '/', regex=True) print(df)
输出结果
Col 0 N/A 1 P/D 2 https://cg.com 3 C/A
原理说明
正则表达式(?<!:)//的含义:
(?<!:):负向零宽断言,表示当前位置的前面不能是冒号://:匹配两个连续的斜杠
这样就只会命中N//A、P//D这类非网址里的斜杠组合,而https://中的//因为前面有冒号,会被排除在外。
内容的提问来源于stack exchange,提问作者Shivika
相关产品推荐
相关产品推荐

