使用正则表达式修改DataFrame:整行替换需求及问题排查
解决Pandas整行替换问题
你的问题核心是当前代码只替换了字符串中的匹配子串,而非整行内容,解决思路有两种:
方法一:修改正则匹配整行
调整正则表达式,让它匹配包含目标模式的整个字符串,这样replace就会替换整行:
df.replace(to_replace=r'.*[Gg]eramny.*', value='Berlin', regex=True)
解释:.*表示匹配任意长度的任意字符,前后拼接后就能匹配包含[Gg]eramny的整行文本,替换后整行直接变为Berlin。
方法二:布尔索引直接赋值(更直观)
先筛选出包含目标模式的行,再直接赋值,逻辑更清晰:
# 替换成你的实际列名,比如'address' df.loc[df['address'].str.contains(r'[Gg]eramny', regex=True), 'address'] = 'Berlin'
另外注意:你的正则写的是[Gg]eramny,但源字符串里是germany,可能是拼写失误,如果要匹配正确的德国拼写,把正则改成[Gg]ermany即可。
内容的提问来源于stack exchange,提问作者tim_v
相关产品推荐
相关产品推荐

