【问题标题】: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”字符?

提前致谢!

【问题讨论】:

    标签: python string pandas split


    【解决方案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) 可能是个好主意。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-10-25
          • 2019-03-06
          • 1970-01-01
          • 1970-01-01
          • 2018-03-23
          • 2021-08-12
          • 2022-12-03
          相关资源
          最近更新 更多