[英]Categorize the dataframe column data into Latin/Non-Latin
我正在尝试通过 Python 对拉丁语/非拉丁语数据进行分类。 如果是拉丁语,我希望输出为“列名:拉丁语”,如果是非拉丁语,则输出为“列名:非拉丁语”。 这是我正在使用的数据集:
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
我尝试添加以下代码。 我没有收到任何错误,但我一直收到“拉丁语”。 代码有问题吗?
if any(dataset.name.astype(str).str.contains(u'[U+0000-U+007F]')):
print ('Latin')
else:
print('Non-Latin')
如果有人能告诉我如何将输出显示为“列名:拉丁语”,列名是从数据帧迭代的,我也会很高兴
这取决于什么需要 - 如果检查任何值是否具有非拉丁值或所有值都具有带有numpy.where
字符串:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.