如何计算熊猫数据框中的元音和辅音(大写和小写)?

Posted

技术标签:

【中文标题】如何计算熊猫数据框中的元音和辅音(大写和小写)?【英文标题】:How to count vowels and consonants in pandas dataframe (both uppercase and lowercase)? 【发布时间】:2018-08-20 10:08:35 【问题描述】:

这是我的数据

No  Body
1   DaTa, Analytics
2   StackOver.

这是我的预期输出

No  Body                 Vowels   Consonant  
1   DaTa, Analytics.     5        8        
2   StackOver.           3        6 

【问题讨论】:

【参考方案1】:

您可以使用非常简单的正则表达式来计算元音的数量,而辅音的数量是所有字母的数量减去元音的数量:

In [121]: df['Vowels'] = df.Body.str.lower().str.count(r'[aeiou]')

In [122]: df['Consonant'] = df.Body.str.lower().str.count(r'[a-z]') - df['Vowels']

In [123]: df
Out[123]:
   No             Body  Vowels  Consonant
0   1  DaTa, Analytics       5          8
1   2       StackOver.       3          6

PSy may be either a vowel or a consonant ...

【讨论】:

你忘了y ;) @jezrael, IMO there is no clear rule, whether y is a vowel or a consonant 斯洛伐克语中的yVowel ;) 好的,很高兴知道【参考方案2】:

使用str.count 和参数re.I 忽略大小写:

import re
df['Vowels'] = df['Body'].str.count(r'[aeiou]', flags=re.I)
df['Consonant'] = df['Body'].str.count(r'[bcdfghjklmnpqrstvwxzy]', flags=re.I)
print (df)
   No             Body  Vowels  Consonant
0   1  DaTa, Analytics       5          8
1   2       StackOver.       3          6

【讨论】:

【参考方案3】:

试试这个:

vowels = set("AEIOUaeiou")
cons = set("bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ")

df['Vowels'] = [sum(1 for c in x if c in vowels) for x in df['Body']]
df['Consonents'] = [sum(1 for c in x if c in cons) for x in df['Body']]

print (df)

【讨论】:

我如何获得 sample.csv ? 我刚刚创建了它来测试我的代码。忽略那个。我已经编辑了我的答案 这太棒了,它对其他部分的工作很有帮助,谢谢【参考方案4】:

另一种选择是将str.extractall 与 or'd 条件一起应用以有效地将事物分成两列,然后按索引分组并计算列数,例如:

counts = (
    df.Body.str.extractall('(?i)(?P<vowels>[aeiou])|(?P<consonants>[a-z])')
    .groupby(level=0).count()
)

这是因为正则表达式的(?i) 指定表达式不区分大小写,[aeiou] 将所有元音捕获到第一个匹配组(或列)中,然后[a-z] 将捕获第一个匹配的所有其他字母组没有捕获(除了元音之外的所有内容)。

给你:

   vowels  consonants
0       5           8
1       3           6

然后根据需要分配/加入您的原始 DF。

【讨论】:

以上是关于如何计算熊猫数据框中的元音和辅音(大写和小写)?的主要内容,如果未能解决你的问题,请参考以下文章

辅音和元音斯威夫特

如何检查Java中的句子中有多少个辅音和元音?

java笔试题:判断一个小写字母是元音字母还是辅音字母?

C ++从文本文件中计算元音辅音

(高职专科组)第十一届蓝桥杯省模拟赛答案给定一个单词,请计算这个单词中有多少个元音字母,多少个辅音字母。

(高职专科组)第十一届蓝桥杯省模拟赛答案给定一个单词,请计算这个单词中有多少个元音字母,多少个辅音字母。