Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何计算数据帧上的大小写_Python_String_Pandas_Text_Feature Extraction - Fatal编程技术网

Python 如何计算数据帧上的大小写

Python 如何计算数据帧上的大小写,python,string,pandas,text,feature-extraction,Python,String,Pandas,Text,Feature Extraction,这是我的数据 No Body 1 DaTa Analytics 2 2 StackOver 67 No Body Uppercase Lowercase 1 DaTa Analytics 2 3 10 2 StackOver 67 2 7 这是我的预期输出 No Body Uppercase Lower

这是我的数据

No  Body                 
1   DaTa Analytics 2
2   StackOver 67
No  Body                 Uppercase   Lowercase
1   DaTa Analytics 2     3           10
2   StackOver 67         2           7
这是我的预期输出

No  Body                 Uppercase   Lowercase
1   DaTa Analytics 2     3           10
2   StackOver 67         2           7
用于提取大写和小写字母以及长度:

No  Body                 Uppercase   Lowercase
1   DaTa Analytics 2     3           10
2   StackOver 67         2           7
df['Uppercase'] = df['Body'].str.findall(r'[A-Z]').str.len()
df['Lowercase'] = df['Body'].str.findall(r'[a-z]').str.len()
另一个解决方案:

No  Body                 Uppercase   Lowercase
1   DaTa Analytics 2     3           10
2   StackOver 67         2           7
df['Uppercase'] = df['Body'].str.count(r'[A-Z]')
df['Lowercase'] = df['Body'].str.count(r'[a-z]')

print (df)
   No            Body  Uppercase  Lowercase
0   1  DaTa Analytics          3         10
1   2       StackOver          2          7

下面是一个处理ASCII代码的性能极高的解决方案:

No  Body                 Uppercase   Lowercase
1   DaTa Analytics 2     3           10
2   StackOver 67         2           7
v = df.Body.values.astype(str)
v = v.view(np.uint8).reshape(len(df), -1)

df['Uppercase'] = ((v >= 65) & (v <= 90)).sum(1)
df['Lowercase'] = ((v >= 97) & (v <= 122)).sum(1)

计时

No  Body                 Uppercase   Lowercase
1   DaTa Analytics 2     3           10
2   StackOver 67         2           7
df = pd.concat([df] * 100000, ignore_index=True)

No  Body                 Uppercase   Lowercase
1   DaTa Analytics 2     3           10
2   StackOver 67         2           7

No  Body                 Uppercase   Lowercase
1   DaTa Analytics 2     3           10
2   StackOver 67         2           7

No  Body                 Uppercase   Lowercase
1   DaTa Analytics 2     3           10
2   StackOver 67         2           7
#在本文中
%%时间
v=df.Body.values.astype(str)
v=v.view(np.uint8)。重塑(透镜(df),-1)

df['Uppercase']=((v>=65)和(v=97)和(v给我一些时间,我正在寻找一个更快的非正则表达式解决方案。我仍然没有选择最好的答案。谢谢你的耐心。有些用户不想等到滴答声响起。@NabihBawazir-我添加了带有
计数
的新解决方案,你能检查一下吗?这种解决方案也可以用于表情符号吗,我有性能发生在emoticon@NabihBawazir没问题,改用
v.view(np.uint16)
。@cᴏʟᴅsᴘᴇᴇᴅ - 我添加了另一个解决方案,你能添加时间吗?谢谢。@jezrael不用担心,added@NabihBawazir如果仍然不起作用,请尝试
np.uint32
,它应该处理书中的任何unicode字符。