如何在Pandas DataFrame的GEN列中替换特定格式的城市名称子串?
解决方案
直接用pandas.Series.str.replace结合正则表达式就能完成需求,核心代码如下:
data['GEN'] = data['GEN'].str.replace(r'(\.)([A-ZÄÖÜ])', r'\1 \2', regex=True)
正则说明
(\.):匹配点号并捕获为第一个分组(后续用\1引用)([A-ZÄÖÜ]):匹配大写A-Z以及德语特有的变音字母Ä、Ö、Ü,捕获为第二个分组(后续用\2引用)- 替换规则
\1 \2会在点号和大写字母之间插入一个空格,完美匹配你要的效果:"Frankfurt a.Main"→"Frankfurt a. Main""Frankfurt a.d.Oder"→"Frankfurt a.d. Oder"
可选:先检查待修改的行
如果你想先确认哪些行需要调整,可以用str.contains筛选:
# 生成匹配掩码 mask = data['GEN'].str.contains(r'\.[A-ZÄÖÜ]', regex=True) # 输出所有需要修改的城市名称 print(data[mask]['GEN'])
内容的提问来源于stack exchange,提问作者Bipolar Minds
相关产品推荐
相关产品推荐

