You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python-Pandas:移除冗余字符串并拆分至两列的技术需求

拆分Pandas含冗余转义换行符的列为两列

问题场景

你有一列Pandas数据,每条记录格式如下:

John Doe\n \n\n \n\n \nBlack    
Jane Doe\r\n\n \r\n\n \r\n\n \r\nViolet

需要将其拆分为两列,分别存储姓名和最终的目标值,示例结果:

Column AColumn B
John DoeBlack
Jane DoeViolet

你尝试使用df['column'].str.replace('\(.*$', '')时,出现SyntaxError: unterminated string literal错误,以下是解决方案:

错误原因

你的代码出现语法错误是因为:

  1. Python字符串中,单个\会被视为转义字符,直接写'\(.*$'会导致解析错误(\(被当作未完成的转义);
  2. 正则表达式逻辑不符合需求:\(是匹配左括号,但你的数据中不存在括号,无法正确匹配冗余内容。

解决方案

方法1:正则提取(推荐)

利用str.extract直接提取姓名和目标值,正则匹配开头的姓名(由两个单词组成),跳过中间所有换行、空格等冗余内容,最后提取末尾的目标单词:

import pandas as pd

# 示例数据
data = {
    'column': [
        'John Doe\n \n\n \n\n \nBlack',
        'Jane Doe\r\n\n \r\n\n \r\n\n \r\nViolet'
    ]
}
df = pd.DataFrame(data)

# 提取两列
df[['Column A', 'Column B']] = df['column'].str.extract(r'^(\w+\s\w+)\s*[\n\r\s]+(\w+)$')

# 查看结果
print(df[['Column A', 'Column B']])

方法2:拆分后处理

先按换行符拆分字符串,取第一个元素作为姓名,取最后一个元素作为目标值(需清理空格):

df['Column A'] = df['column'].str.split(r'[\n\r]').str[0].str.strip()
df['Column B'] = df['column'].str.split(r'[\n\r]').str[-1].str.strip()

这两种方法都能得到你需要的拆分结果。

内容的提问来源于stack exchange,提问作者Abdul-Kareem Abdul-Rahman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 13:31:06