Распределите данные столбца данных по категориям на латиницу / нелатинскую - PullRequest
1 голос
/ 09 июля 2019

Я пытаюсь классифицировать латинские / нелатинские данные через Python.Я хочу, чтобы вывод был «columnname: Latin», если он латинский, «columnname: Non-Latin», если он нелатинский.Вот набор данных, который я использую:

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')

А также я был бы рад, если бы кто-то мог сказать мне, как отобразить вывод в виде "имя столбца: латиница", имя столбца повторяется из кадра данных

1 Ответ

1 голос
/ 09 июля 2019

Это зависит от того, что нужно - если проверить, если какое-либо значение имеет нелатинские значения или все значения имеют строки с 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...