为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

红糖糍粑 2023-09-05 19:50:07
我使用下面的代码删除下面所有非英文字符:DF.text.replace({r'[^\x00-\x7F]+':''}, regex=True, inplace=True)其中 df 有一个名为 text 的列,其中包含如下文本:        texthi what are you saying?okay let me knowsounds great, mikeyok.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 个字符或一些在它们之后毫无意义的字符已被上面的代码更改。
查看完整描述

2 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

您可以使用


df[~df['text'].str.contains(r'[^\x00-\x7F]')]

熊猫测试:


import pandas as pd

df = 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[~...]只保留那些与正则表达式不匹配的行。


查看完整回答
反对 回复 2023-09-05
?
呼如林

TA贡献1798条经验 获得超3个赞

str.contains()返回一系列布尔值,我们可以用它们来索引我们的框架

patternDel = "[^\x00-\x7F]"
filter = df['Event Name'].str.contains(patternDel)

我倾向于保留我们想要的东西而不是删除行。由于过滤器代表我们要删除的内容,因此我们使用 ~ 来获取所有不匹配的行并保留它们

df = df[~filter]


查看完整回答
反对 回复 2023-09-05
  • 2 回答
  • 0 关注
  • 154 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信