猿问

删除非ascii字符时如何完全删除行?

我使用下面的代码删除下面所有非英文字符:


DF.text.replace({r'[^\x00-\x7F]+':''}, regex=True, inplace=True)

其中 df 有一个名为 text 的列,其中包含如下文本:


        text

hi what are you saying?

okay let me know

sounds great, mikey

ok.

right

ご承知のとおり、残念ながら悪質な詐欺が増加しているようですのでお気を付けください。\n

¡Hola miguel! Lamento mucho la confusión cau

预期输出:


          text

    hi what are you saying?

    okay let me know

    sounds great, mikey

    ok.

    right

对于我的代码删除字符的行 -


我想从 df 中完全删除这些行,这意味着如果它确实替换了任何非英语字符,我想从 df 中完全删除该行,以避免该行包含 0 个字符或一些在它们之后毫无意义的字符已被上面的代码更改。


红糖糍粑
浏览 155回答 2
2回答

神不在的星期二

您可以使用df[~df['text'].str.contains(r'[^\x00-\x7F]')]熊猫测试:import pandas as pddf = pd.DataFrame({'text': ['hi what are you saying?', 'ご承知のとおり、残念ながら悪質な詐欺が増加しているようですのでお気を付けください。'], 'another_col':['demo 1', 'demo 2']})df[~df['text'].str.contains(r'[^\x00-\x7F]')]#                      text another_col# 0  hi what are you saying?      demo 1笔记:df['text'].str.contains(r'[^\x00-\x7F]')text查找列中包含 ASCII 字符以外的字符的所有值(这是我们的“掩码”)df[~...]只保留那些与正则表达式不匹配的行。

呼如林

str.contains()返回一系列布尔值,我们可以用它们来索引我们的框架patternDel = "[^\x00-\x7F]" filter = df['Event Name'].str.contains(patternDel)我倾向于保留我们想要的东西而不是删除行。由于过滤器代表我们要删除的内容,因此我们使用 ~ 来获取所有不匹配的行并保留它们df = df[~filter]
随时随地看视频慕课网APP

相关分类

Python
我要回答