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

在 Pandas 或 SQL 中保留包含非英语单词的行

在 Pandas 或 SQL 中保留包含非英语单词的行

潇潇雨雨 2021-07-20 17:01:00
我的数据框在 SQL 上看起来像这样(我可以直接在那里编写我的查询,也可以将其导入 Pandas 然后执行):videoId    videoName12234      Racing through the valleys14533      Character Loose14456      सूरमा धड़क 17889      हिचकी16612      মন তোমাকে ছুঁয়ে দিলাম15580      ঈশানকোণে বিষন্নতায়所以我渴望的数据框是这样的:videoId    videoName 14456      सूरमा धड़क  17889      हिचकी 16612      মন তোমাকে ছুঁয়ে দিলাম 15580      ঈশানকোণে বিষন্নতায়我想保留带有“印地语”和“孟加拉语”字样的行。无论如何我可以直接从 SQL 或通过在 Pandas 中导入来做到这一点,无论如何都可以。然后我想要区分“印地语”和“孟加拉语”。两个不同的数据帧,如:df_hindi:    videoId     videoName     14456      सूरमा धड़क      17889      हिचकीdf_bengali:videoId    videoName16612      মন তোমাকে ছুঁয়ে দিলাম15580      ঈশানকোণে বিষন্নতায়正如我所说,任何方法都可以,但 Pandas 和 Python 更可取。
查看完整描述

2 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

查找字体范围,印地语(梵文)似乎是U+0900–U+097F和孟加拉语U+0980–U+09FF。


chars_hindi = [chr(c) for c in range(0x0900, 0x097f)]

chars_bengali = [chr(c) for c in range(0x0980, 0x09ff)]

使用交替通过正则表达式过滤掉数据帧为您提供所需的输出:


df_hindi = df[df.videoName.str.contains('|'.join(chars_hindi))]

df_bengali = df[df.videoName.str.contains('|'.join(chars_bengali))]

虽然被警告,这只能给出的假设,每一个videoName也只包含无论是印地文和梵文。如果您的数据不能满足该假设,那么您必须以另一种方式解决您的问题。


查看完整回答
反对 回复 2021-07-28
  • 2 回答
  • 0 关注
  • 146 浏览
慕课专栏
更多

添加回答

举报

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