首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将dataframe列数据分类为拉丁文/非拉丁文。

将dataframe列数据分类为拉丁文/非拉丁文。
EN

Stack Overflow用户
提问于 2019-07-09 14:13:27
回答 1查看 245关注 0票数 1

我试图通过Python对拉丁/非拉丁数据进行分类。我希望输出是‘列名:拉丁文’,如果是拉丁文,列名:非拉丁文‘如果是非拉丁文’。下面是我使用的数据集:

代码语言:javascript
复制
name|company|address|ssn|creditcardnumber

Gauge J. Wiley|Crown Holdings|1916 Central Park Columbus|697-01-963|4175-0049-9703-9147

Dalia G. Valenzuela|Urs Corporation|8672 Cottage|Cincinnati|056-74-804|3653-0049-5620-71

هاها|Exide Technologies|هاها|Washington|139-09-346|6495-1799-7338-6619

我尝试添加以下代码。我没有任何错误,但我一直都是拉丁语。密码有什么问题吗?

代码语言:javascript
复制
if any(dataset.name.astype(str).str.contains(u'[U+0000-U+007F]')):
    print ('Latin')
else:
    print('Non-Latin')

此外,如果有人能告诉我如何将输出显示为“列名:拉丁文”,列名将从dataframe中迭代,我也会很高兴。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-09 14:38:06

这取决于需要什么--如果检查任何值是否有非拉丁值,或者所有值都带有numpy.where字符串。

代码语言:javascript
复制
df = pd.DataFrame({'name':[u"هاها",'a',u"aهاها"]})

#https://stackoverflow.com/a/3308844
import unicodedata as ud
latin_letters= {}
def is_latin(uchr):
    try: return latin_letters[uchr]
    except KeyError:
         return latin_letters.setdefault(uchr, 'LATIN' in ud.name(uchr))

def only_roman_chars(unistr):
    return all(is_latin(uchr)
           for uchr in unistr
           if uchr.isalpha()) 

#check if any
df['new1'] = np.where(df['name'].map(only_roman_chars), 'Latin','Non-Latin')
#check if all
df['new2'] = np.where(df.name.str.contains('[a-zA-Z]'), 'Latin','Non-Latin')
print (df)

    name       new1       new2
0   هاها  Non-Latin  Non-Latin
1      a      Latin      Latin
2  aهاها  Non-Latin      Latin
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56954569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档