从熊猫数据框单元格中的凌乱字符串中删除换行符?
Posted
技术标签:
【中文标题】从熊猫数据框单元格中的凌乱字符串中删除换行符?【英文标题】:removing newlines from messy strings in pandas dataframe cells? 【发布时间】:2017-10-28 21:25:23 【问题描述】:我使用了多种方法来拆分和剥离我的 pandas 数据框中的字符串以删除所有 '\n' 字符,但由于某种原因,它根本不想删除附加到其他单词的字符,即使我把它们分开了。我有一个 pandas 数据框,其中有一列使用 Beautifulsoup 从网页中捕获文本。 Beautifulsoup 已经对文本进行了一些清理,但它未能删除附加到其他字符的换行符。我的字符串看起来有点像这样:
“动手\n游戏开发。我们将研究与游戏相关的各种软件技术,包括编程语言、脚本\n语言、操作系统、文件系统、网络、模拟\n引擎和多媒体设计系统. 我们还将研究\n计算机科学和相关\n领域的一些基本科学概念,包括“
有没有一种简单的python 方法来删除这些“\n”字符?
提前致谢!
【问题讨论】:
【参考方案1】:编辑:正确答案是:
df = df.replace(r'\n',' ', regex=True)
我觉得你需要replace
:
df = df.replace('\n','', regex=True)
或者:
df = df.replace('\n',' ', regex=True)
或者:
df = df.replace(r'\\n',' ', regex=True)
示例:
text = '''hands-on\ndev nologies\nrelevant scripting\nlang
'''
df = pd.DataFrame('A':[text])
print (df)
A
0 hands-on\ndev nologies\nrelevant scripting\nla...
df = df.replace('\n',' ', regex=True)
print (df)
A
0 hands-on dev nologies relevant scripting lang
【讨论】:
谢谢!出于某种原因,它似乎仍然无法正常工作,我已经完全复制了代码并尝试运行它。然后我尝试只将它应用于需要应用的列:没有运气。然后我尝试了一个循环遍历该列的每个单元格并调用 cell.replace('n', '')。也没什么。我无法在 for 循环替换调用中使用正则表达式,因为我正在迭代单个字符串。 我认为这个任务依赖于数据并且真的很难(如果简单的替换不起作用)。那么可以创建pickle 并将其发送到我的个人资料中的电子邮件吗?如果数据是机密的,是否可以将其匿名化? 对于以后发现的人:我认为表达式应该是:df.replace(r'\n', ' ', regex=True)
,即不要使用两个反斜杠。【参考方案2】:
要删除回车符(\r
)、换行符(\n)
和制表符(\t
)
df = df.replace(r'\r+|\n+|\t+','', regex=True)
【讨论】:
【参考方案3】:df.replace(to_replace=[r"\\t|\\n|\\r", "\t|\n|\r"], value=["",""], regex=True, inplace=True)
为我工作。
来源:
https://gist.github.com/smram/d6ded3c9028272360eb65bcab564a18a
【讨论】:
不确定 value=["",""] 的作用? Gist 也没有解释。但它就像魅力一样。【参考方案4】: df = 'Sarah Marie Wimberly So so beautiful!!!\nAbram Staten You guys look good man.\nTJ Sloan I miss you guys\n'
df = df.replace(r'\\n',' ', regex=True)
这适用于我拥有的凌乱数据。
【讨论】:
【参考方案5】:在杂乱的数据中,删除所有空格 df.replace(r'\s', '', regex = True, inplace = True)
可能是个好主意。
【讨论】:
以上是关于从熊猫数据框单元格中的凌乱字符串中删除换行符?的主要内容,如果未能解决你的问题,请参考以下文章
如何在熊猫数据框单元格中提取部分字符串并在其中创建一个包含该字符串的新列
Python/有效的方法从每个 Pandas 数据框单元格中删除空格,其中包含类似对象的字符串