【问题标题】:Categorize the dataframe column data into Latin/Non-Latin将数据框列数据分类为拉丁/非拉丁
【发布时间】:2019-11-19 03:05:10
【问题描述】:

我正在尝试通过 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')

如果有人能告诉我如何将输出显示为“列名:拉丁语”,我会很高兴,列名是从数据帧中迭代出来的

【问题讨论】:

  • 你的预期输出是什么?
  • name:Non-Latin company:Latin address:Non-Latin 这是我第一次遇到堆栈溢出。请原谅我犯的任何错误:)
  • @C8H10N4O2 我猜不完全是
  • 因为any(),您一直在学习拉丁语。您需要使用Series.apply() 而不是any()。只需apply() 重复问题中编写的函数。您的问题足够接近,可以被视为重复。如果您需要了解如何apply() 一个函数,那么您应该重新表述您的问题。

标签: python python-3.x pandas


【解决方案1】:

这取决于需要 - 检查是否有任何值具有非拉丁值或所有值都具有带有 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

【讨论】:

  • 我是 python 新手。对不起我的无知。 is_latin 函数在这里做什么?
  • @Shri - 它在循环中测试字符 - 每个值分别
  • 好的。谢谢:D
  • 当然,@jezrael 我会的。我仍在尝试这个解决方案的一些迭代。完成后会更新:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-26
  • 2011-02-28
  • 1970-01-01
  • 2012-06-28
  • 1970-01-01
  • 2011-02-02
  • 2012-10-08
相关资源
最近更新 更多