阅读列内容后,将标签添加到新列

我有一个Excel文件,该文件在两列中包含成千上万的英语/拉丁语和阿拉伯语单词,第一列的名称为“ EN”,另一列的名称为“ AR”。我要处理的列是“ AR”列。

我想在仅包含阿拉伯语单词的每行前的新列中添加“ ar”,并在仅包含拉丁语词汇的每行前添加“ en”,并在包含以下内容的每行前添加“ enar”拉丁语和阿拉伯语词汇。

注意:所有行都使用数字,点“。”,逗号“。”。

我的文件示例,我想做的工作:

    EN                       AR                new column
    Appel                        تفاحة               ar
    Appel (1990)             (1990) تفاحة            ar
    R. Appel                 ر. تفاحة                ar
    Red,Appel               Red Appel                en
    Red Appel                Red Appel                en
    R. Appel                 R. Appel                 en
    Red,Appel               تفاحة، Red              enar
    Red Appel                Red تفاحة               enar

如何使用Python /熊猫做到这一点?

谢谢你们的帮助。

zabcdhello 回答:阅读列内容后,将标签添加到新列

这是一个名为regex的第三方库的可能解决方案。

代码

import pandas as pd
import regex

data = {'AR':['    تفاحة ','(1990) تفاحة','ر. تفاحة','Red Appel','R. Appel','تفاحة، Red','Red تفاحة']}

df = pd.DataFrame(data)

df['is_arabic'] = df['AR'].apply(lambda t: True if regex.search(r'[^\p{Latin}\W]',t) else False)

df['is_latin'] = df['AR'].apply(lambda t: True if regex.search(r'[\p{Latin}a-zA-Z]',t) else False)

#assign 'enar','ar','en'
def myfunc(t):
    if t[0]&t[1]:
        return 'enar'
    elif t[0]:
        return 'ar'
    else:
        return 'en'

df['new_column'] = df[['is_arabic','is_latin']].apply(myfunc,axis=1)

输出

#print(df)
#              AR  is_arabic  is_latin new_column
# 0        تفاحة        True     False         ar
# 1  (1990) تفاحة       True     False         ar
# 2      ر. تفاحة       True     False         ar
# 3     Red Appel      False      True         en
# 4     Red Appel      False      True         en
# 5      R. Appel      False      True         en
# 6    تفاحة، Red       True      True       enar
# 7     Red تفاحة       True      True       enar
,

我认为您可以使用此软件包TextBlob来定义新列, 首先,您应该安装TextBlob软件包,然后您的代码将如下所示:

from textblob import TextBlob

def detect_language(text):
    diff_lang = []

    for word in text.split():
        diff_lang.append(TextBlob(word).detect_language())

    diffrent_language_count = len(list(set(diff_lang)))

    if diffrent_language_count > 1 :
        return("enar")
    elif :
        return (diff_lang[0])

df ['new column'] = df['AR'].apply(lambda txt: detect_language(txt))
本文链接:https://www.f2er.com/3132352.html

大家都在问