python-3.x 我正在尝试使用panda从列中拆分并删除不必要的字符

vjhs03f7  于 2022-12-05  发布在  Python
关注(0)|答案(2)|浏览(124)

我试图删除所有不必要的单词和字符的值在这一列。我希望行包含'入门级','中级-高级'等。也有无论如何翻译阿拉伯语到英语或我应该使用替换功能?
df_africa.资历级别.值计数()

{'Seniority level': 'Entry level'}            1073
{'Seniority level': 'Mid-Senior level'}        695
{'Seniority level': 'Associate'}               481
{'Seniority level': 'Not Applicable'}          150
{'مستوى الأقدمية': 'مستوى متوسط الأقدمية'}     115
{'مستوى الأقدمية': 'مستوى المبتدئين'}           82
{'نوع التوظيف': 'دوام كامل'}                    73
{'مستوى الأقدمية': 'مساعد'}                     48
{'مستوى الأقدمية': 'غير مطبق'}                  42
{'Seniority level': 'Internship'}               39
{'Employment type': 'Contract'}                 21
{'Employment type': 'Full-time'}                 1


I've tried the split function but i couldn't get it to work properly.
pnwntuvh

pnwntuvh1#

IIUC,使用此:

import ast

#Is there any non-latin letters?
m = ~df_africa["seniority_level"].str.contains("[A-Z]")
​
s = df_africa["seniority_level"].apply(lambda x: ast.literal_eval(x))
df_africa["new_col"] = s.str["مستوى الأقدمية"].where(m, s.str["Seniority level"])

如果需要翻译提取的单词,请使用deep-translator

#pip install -U deep-translator
from deep_translator import GoogleTranslator

df_africa["new_col (TRA)"] = (
                                df_africa["new_col"]
                                    .fillna("")
                                    .apply(lambda x: GoogleTranslator(source="arabic")
                                                       .translate(x)
                                                       .title())
                                    .replace("", None)
                              )

尽管我建议您使用一个使用map的自定义dict来获得适当的翻译。

#输出:

display(df_africa)

mwg9r5ms

mwg9r5ms2#

了解'seniority_level'列的类型会很有用,但我将假设该列由文字字符串组成(例如,“{'Seniority level':'入门级'}”)
可以翻译所有的文本与此googletrans包,它背负了谷歌翻译,所以使用它,而它的持续。请确保安装版本4.0.0rc1。

$ pip install googletrans==4.0.0rc1

翻译

第一次

然后获取所需文本:

第一个
如果googletrans最终崩溃,请查看官方的google translate api

相关问题