微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从Pandas Dataframe中分离日语文本和英语文本?

如何解决如何从Pandas Dataframe中分离日语文本和英语文本?

我有一个数据框列,其中包含英语和日语文本。就像这样:

----IDs-------Texts ---------
    132   |  復旧完了。よろしく頼む! 
    623   |  This is an English text 
    2364  |  "<@UD3JFBREV> 収集した日本語のツイートデータはどこにありますでしょうか" 
    ...   |  .....

现在,我想从Texts列中将英语文本与日语文本分开。我的新数据框应仅返回英文文本,而忽略日文文本。我该怎么办?

解决方法

好,谢谢您上述可能的解决方案。不幸的是,那些并不能解决我的问题。它对我的数据集起作用的方式是这样的:

df['Texts'] = df[~df.Texts.str.contains(r'[^\x00-\x7F]',na=False)]

这将删除所有包含任何非ASCII字符的行,并将这些行设为NaN。因此,我删除了NaN值,该值使我从数据框中获得了所有英语句子。

,

日语文本为not ascii(它是Unicode),因此您可以根据IS ASCII条件过滤文本。假设您的字符串只能是日语或英语,则可以将字符串方法.isascii()应用于“文本”列的每个元素,如下所示(在Python 3.7及更高版本中):

df[df['Texts'].apply(lambda x: x.isascii())]

在上面的示例中,这将返回:

ids text
123 This is an English text

在早期版本的Python中,您可以执行以下操作:

df[df['text'].apply(lambda x: len(x.encode('utf8')) == len(x))]

(基本上,如果将字符串编码为utf8后,其长度与字符串的总长度相同,则为ASCII,因此必须为英语。)

您可以通过将其应用于字符串来测试其工作原理:

"<@UD3JFBREV> 収集した日本語のツイートデータはどこにありますでしょうか".isascii()
False 

"This is an English text".isascii()
True

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。