如何在数据框列中以大写字母拆分字符串?

问题描述

我想在此dataframe列中分隔所有以大写字母开头的字符。

x-zumo-auth

而且我已经使用了一个允许我执行该功能功能,该功能似乎不起作用

Unicainstancia_DF['TesteNomeJuiz']
0          ClinicadeOlhosSaoPauloLtda-Me
1        PatriciaAparecidamendesFerreira
2        CarraroHoldingParticipaçõesLtda
3               IsadoraCentofantiFonseca
4       Petruso&PetrusoSupermercadosLtda
....
Name: TesteNomeJuiz,Length: 1510,dtype: object

def camel_case_split(identifier):
matches = finditer('.+?(?:(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])|$)',identifier)
return [m.group(0) for m in matches]

Unicainstancia_DF['TesteNomeJuiz'].astype('str')
splitted = re.sub('([A-Z][a-z]+)',r' \1',re.sub('([A-Z]+)',Unicainstancia_DF['TesteNomeJuiz'])).split

而且我还尝试调用info()函数,但不起作用

TypeError                                 
Traceback (most recent call last)
<ipython-input-56-00cc9d0b832f> in <module>
1 Unicainstancia_DF['TesteNomeJuiz'].astype('str')
--> 2 splitted = re.sub('([A-Z][a-z]+)',Unicainstancia_DF['TesteNomeJuiz'])).split
F:\Anaconda\lib\re.py in sub(pattern,repl,string,count,flags)
208     a callable,it's passed the Match object and must return
209     a replacement string to be used."""
--> 210     return _compile(pattern,flags).sub(repl,count)
211 
212 def subn(pattern,count=0,flags=0):
TypeError: expected string or bytes-like object

解决方法

您只能在pandas.DataFrame上调用.info(),而不能在pandas.Series上调用。

假设Unicainstancia_DF是一个DataFrame,则可以调用:Unicainstancia_DF.info(),而不是Unicainstancia_DF['TesteNomeJuiz'].info()

在使用Unicainstancia_DF['TesteNomeJuiz']时,您正在使用序列/列选择器- 您已经从DataFrame中选择了一个列(或“系列”),并打算对其进行处理。

从您的示例中,我不清楚您要对该系列做什么。如果要在A-Z上分割,则可以执行以下操作:

import re

print([re.split(r'[A-Z]',x) for x in Unicainstancia_DF['TesteNomeJuiz']]

但是,正如克里斯建议的那样,如果您澄清期望的输出以及要存储拆分的位置,我可以更具体地说明。您实际上是否想在A-Z上分割似乎令人怀疑-更可能是您想在A-Z与任何其他字符之间的边界上分割。是这样吗?