pandas DataFrame调用replace方法替换?为单引号不生效问题求助
问题原因
- pandas的
Series.replace()方法默认执行全值匹配:仅当整个单元格的内容完全等于待替换的?时才会触发替换,你场景中的?是字符串的局部子串,因此默认配置下替换不生效。
解决方案
以下两种方案都可以实现子串替换的需求:
方案1:调整replace()方法为正则匹配模式
开启regex=True后会扫描每个字符串的所有子串执行匹配,注意正则中?是特殊字符,需要加反斜杠转义:
df['Indication'] = df['Indication'].replace('\?', '’', regex=True)
方案2:使用str.replace()字符串处理方法
str.replace()默认就是子串匹配模式,写法更简洁,显式指定regex=False避免?被识别为正则特殊字符,同时兼容所有pandas版本:
df['Indication'] = df['Indication'].str.replace('?', '’', regex=False)
两种方案执行后,示例值Hodgkin?s Lymphoma at high risk of relapse or progression post-ASCT都会被替换为你期望的Hodgkin’s Lymphoma at high risk of relapse or progression post-ASCT。
内容的提问来源于stack exchange,提问作者Shivika Patel
相关产品推荐
相关产品推荐

