我使用下面的代码删除下面所有非英文字符: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 回答
![?](http://img1.sycdn.imooc.com/545847d40001cbef02200220-100-100.jpg)
神不在的星期二
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[~...]只保留那些与正则表达式不匹配的行。
![?](http://img1.sycdn.imooc.com/533e4c3300019caf02000200-100-100.jpg)
呼如林
TA贡献1798条经验 获得超3个赞
str.contains()返回一系列布尔值,我们可以用它们来索引我们的框架
patternDel = "[^\x00-\x7F]" filter = df['Event Name'].str.contains(patternDel)
我倾向于保留我们想要的东西而不是删除行。由于过滤器代表我们要删除的内容,因此我们使用 ~ 来获取所有不匹配的行并保留它们
df = df[~filter]
添加回答
举报
0/150
提交
取消