【问题标题】:Drop Non English Rows Pandas删除非英语行 Pandas
【发布时间】:2021-11-02 00:15:36
【问题描述】:

df.review:

de la nada mi ya no se escucha 
I tried to set it up 
It is a good product

目的是删除非英语行。我尝试了thisthis,但都没有工作。以下代码错误地将所有行标记为英文。

from langdetect import detect
df['detect'] = detect(str(df['review']))

for i in df.detect:
    if i not in ('en'):
        df.drop(i)

【问题讨论】:

    标签: python pandas drop non-english


    【解决方案1】:

    您遇到的问题是您将系列对象传递给不知道如何处理它的函数。要传递单个值,请使用变换或应用。请看下面的代码。

    df['detect'] = df['review'].apply(detect)
    

    这应该会给你一个包含评论语言的列然后如果你想删除你这样做的列

    df = df[df['detect'] == 'en']
    

    如果您遇到“文本中没有特征”异常,则表示该列中的某些行不包含字母。在这种情况下,您需要删除这些行。 python中没有检查字符串是否至少包含一个字母的功能,要解决这个问题,您可以将列中的所有字符串更改为小写,然后检查字符串中的所有字母是否都是小写。如果根本没有字母,它将返回 false。检查代码

    df['detect'] = df['detect'].str.lower()
    df = df[df['detect'].str.islower()]
    

    【讨论】:

    • 谢谢,@Qdr。我先尝试了“申请”。但它给了我以下错误: TypeError: expected string or bytes-like object
    • @SaNa 你确定列review 中的dtype 是String 吗?尝试这样做。 df['review'] = df['review'].astype('str') 我在我的机器上试了试,效果很好
    • 谢谢,成功了。愚蠢的错误!但是现在即使我使用另一个文件进行输出,它也会出现以下错误:“LangDetectException:文本中没有特征”
    • 我会修改我的评论给出答案
    • @SaNa 请检查修改后的答案
    猜你喜欢
    • 1970-01-01
    • 2019-08-03
    • 2015-05-16
    • 2022-01-11
    • 2019-03-13
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    相关资源
    最近更新 更多