Python 计算分裂字符串中的辅音和元音

Python 计算分裂字符串中的辅音和元音,python,pandas,dataframe,Python,Pandas,Dataframe,我读了一个.csv文件。我有下面的数据框,它统计列描述中字符串中的元音和辅音。这很有效,但我的问题是我想将描述分成8列,并计算每列的辅音和元音。代码的第二部分允许我将描述拆分为8列。如何计算描述分成的所有8列上的元音和辅音 import pandas as pd import re def anti_vowel(s): result = re.sub(r'[AEIOU]', '', s, flags=re.IGNORECASE) return result data = pd

我读了一个.csv文件。我有下面的数据框,它统计列描述中字符串中的元音和辅音。这很有效,但我的问题是我想将描述分成8列,并计算每列的辅音和元音。代码的第二部分允许我将描述拆分为8列。如何计算描述分成的所有8列上的元音和辅音

import pandas as pd
import re

def anti_vowel(s):
    result = re.sub(r'[AEIOU]', '', s, flags=re.IGNORECASE)
    return result

data = pd.read_csv('http://core.secure.ehc.com/src/util/detail-price-list/TristarDivision_SummitMedicalCenter_CM.csv')

data.dropna(inplace = True)

data['Vowels'] = data['Description'].str.count(r'[aeiou]', flags=re.I)
data['Consonant'] = data['Description'].str.count(r'[bcdfghjklmnpqrstvwxzy]', flags=re.I)

print (data)
这是我用来将列描述拆分为8列的代码

import pandas as pd
data = data["Description"].str.split(" ", n = 8, expand = True)
data = pd.read_csv('http://core.secure.ehc.com/src/util/detail-price-list/TristarDivision_SummitMedicalCenter_CM.csv')

data.dropna(inplace = True)

data = data["Description"].str.split(" ", n = 8, expand = True)

print (data)
现在我怎样才能把它全部放在一起呢

为了阅读8的每一列并计算辅音,我知道我可以使用以下方法将0替换为0-7:

testconsonant = data[0].str.count(r'[bcdfghjklmnpqrstvwxzy]', flags=re.I)
testvowel = data[0].str.count(r'[aeiou]', flags=re.I)
预期的产出将是:

Description [0] vowel count consonant count Description [1] vowel count consonant count Description [2] vowel count consonant count Description [3] vowel count consonant count Description [4] vowel count consonant count all the way to description [7]
堆叠然后取消堆叠 如果要将其与数据帧结合,可以执行以下操作:

stacked = data.stack()
pd.concat({
    'Data': data,
    'Vowels': stacked.str.count('[aeiou]', flags=re.I),
    'Consonant': stacked.str.count('[bcdfghjklmnpqrstvwxzy]', flags=re.I)
}, axis=1).unstack()

有趣的是,我们没有您的输入文件TristarDivision\u SummitMedicalCenter\u CM.csv,因此我们无法执行此操作,它不是一个。你能不能编几行输入样本?然后您可以对您的数据执行pd.read_csvpd.compat.stringiou…并请说明问题所在?向我们显示当前输出和预期输出。或者,如果抛出错误,则返回错误/stacktrace。1。如果您有internet连接,那么您确实有输入文件。2.应该不需要补充一些样品线。问题是MCVE,如果您同时运行这两组代码,您可能会得到输出。3.您可以提供帮助,并建议像piR在下面所做的那样堆叠/取消堆叠。1。不,给出一个短暂的、易损坏的、可能过时的URL不是MCVE。URL、网站和公司变老、衰败、崩溃、消失。但是,如果您只是在这里以一个短的多行字符串显示文本输入,并使用pd.compat.StringIO,它就永远不会中断。我在帮你。2.是的,有,见1。否则这不是MCVE。10年前的URL有多少问题仍然有效?很少。3.我对你很有帮助,这个网站应该是一个可重用的资源,想想其他人在几年后试图推断,一旦你的文件不再可用,这会发生什么。只是为了强调这一点,而发问者的价值是能够获得即时问题的答案,一旦URL过时或更糟,更改该问题将失去对其他用户可能具有的任何教育价值。像服务台一样对待他人并不讨人喜欢。请增加更多的价值!正是我想要的。谢谢你,皮尔!如果我想将堆栈添加到当前数据帧中,我将如何操作?@user1470034查看我的更新是否满足您的需要。这正是我试图做的,您太棒了,有一个很棒的第四个。
      Consonant                                         Vowels                                        
              0    1    2    3    4    5    6    7    8      0    1    2    3    4    5    6    7    8
0           3.0  5.0  5.0  1.0  2.0  NaN  NaN  NaN  NaN    1.0  0.0  0.0  0.0  0.0  NaN  NaN  NaN  NaN
1           8.0  5.0  1.0  0.0  0.0  0.0  0.0  0.0  NaN    0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  NaN
2           8.0  5.0  1.0  0.0  0.0  0.0  0.0  0.0  NaN    0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  NaN
3           8.0  5.0  1.0  0.0  0.0  0.0  0.0  0.0  NaN    0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  NaN
4           3.0  5.0  3.0  1.0  0.0  0.0  0.0  0.0  NaN    0.0  0.0  2.0  0.0  0.0  0.0  0.0  0.0  NaN
5           3.0  5.0  3.0  1.0  0.0  0.0  0.0  0.0  NaN    0.0  0.0  2.0  0.0  0.0  0.0  0.0  0.0  NaN
6           3.0  4.0  0.0  1.0  0.0  0.0  0.0  NaN  NaN    3.0  1.0  0.0  0.0  0.0  0.0  0.0  NaN  NaN
7           3.0  3.0  0.0  1.0  0.0  0.0  0.0  NaN  NaN    3.0  1.0  0.0  1.0  0.0  0.0  0.0  NaN  NaN
8           3.0  3.0  0.0  1.0  0.0  0.0  0.0  0.0  0.0    3.0  1.0  0.0  1.0  0.0  0.0  0.0  0.0  0.0
9           3.0  3.0  0.0  1.0  0.0  0.0  0.0  NaN  NaN    3.0  1.0  0.0  1.0  0.0  0.0  0.0  NaN  NaN
10          3.0  3.0  0.0  1.0  0.0  0.0  0.0  0.0  NaN    3.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  NaN
11          3.0  3.0  0.0  2.0  2.0  NaN  NaN  NaN  NaN    3.0  0.0  0.0  0.0  0.0  NaN  NaN  NaN  NaN
12          3.0  3.0  0.0  1.0  0.0  0.0  0.0  0.0  NaN    3.0  1.0  0.0  0.0  0.0  0.0  0.0  0.0  NaN
13          3.0  3.0  0.0  2.0  2.0  NaN  NaN  NaN  NaN    3.0  1.0  0.0  0.0  0.0  NaN  NaN  NaN  NaN
14          3.0  5.0  0.0  2.0  0.0  0.0  0.0  0.0  0.0    3.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
15          3.0  3.0  0.0  3.0  1.0  NaN  NaN  NaN  NaN    3.0  0.0  0.0  0.0  1.0  NaN  NaN  NaN  NaN
stacked = data.stack()
pd.concat({
    'Data': data,
    'Vowels': stacked.str.count('[aeiou]', flags=re.I),
    'Consonant': stacked.str.count('[bcdfghjklmnpqrstvwxzy]', flags=re.I)
}, axis=1).unstack()