Python:如何仅当存在特定特殊字符时分割DataFrame列?
解决Pandas中仅清理特定格式的Name列数据
你的问题出在str.partition('#')[2]会对所有行执行分割——正常姓名里没有#,分割后第三个元素是空字符串,自然会清空有效数据。要只处理带#数字;#前缀的行,用正则匹配替换更精准:
import pandas as pd # 示例测试数据 df = pd.DataFrame({ 'Name': ['Doe, John', '#123;#Smith, Jane', '#45;#Brown, Bob'] }) # 精准移除开头的"#数字;#"前缀 df['Name'] = df['Name'].str.replace(r'^\#\d+\;#', '', regex=True)
正则说明:
^:限定匹配字符串开头的内容,避免误匹配字符串中间的类似格式\#:匹配#符号(正则里#是特殊字符,需要转义)\d+:匹配1个或多个任意数字\;#:匹配固定的;#后缀
处理后你的Name列会保留正常格式的姓名,同时自动清理掉异常前缀:
| Name |
|---|
| Doe, John |
| Smith, Jane |
| Brown, Bob |
内容的提问来源于stack exchange,提问作者Coop
相关产品推荐
相关产品推荐

