簡體   English   中英

如何從 dataframe 列中以大寫字母拆分字符串?

[英]How to split a string at uppercase letters from a dataframe column?

我想在這個 dataframe 列中分隔所有以大寫字符開頭的字符。

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

而且我已經使用了一個 function 允許我這樣做它似乎不起作用

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]+)', r' \1', Unicainstancia_DF['TesteNomeJuiz'])).split

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]+)', r' \1', re.sub('([A-Z]+)', r' \1', 
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, string, count)
211 
212 def subn(pattern, repl, string, count=0, flags=0):
TypeError: expected string or bytes-like object

而且我還嘗試調用 The info() function 但不起作用

Unicainstancia_DF['TesteNomeJuiz'].info()
AttributeError                            Traceback (most recent call last)
<ipython-input-57-403d0ae3c1ac> in <module>
--> 1 Unicainstancia_DF['TesteNomeJuiz'].info()
F:\Anaconda\lib\site-packages\pandas\core\generic.py in __getattr__(self, name)
5272             if self._info_axis._can_hold_identifiers_and_holds_name(name):
5273                 return self[name]
->5274             return object.__getattribute__(self, name)
5275 
5276     def __setattr__(self, name: str, value) -> None:

AttributeError: 'Series' object has no attribute 'info'

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

假設 Unicainstancia_DF 是 DataFrame,您可以調用: Unicainstancia_DF.info() ,但不能Unicainstancia_DF['TesteNomeJuiz'].info()

當您使用Unicainstancia_DF['TesteNomeJuiz']時,您使用的是系列/列選擇器——您已經從 DataFrame 中選擇了一個列(或“系列”)並准備對其進行操作。

從你的例子中,我不清楚你想用那個系列做什么。 如果你想在 AZ 上拆分,那么你可以這樣做:

import re

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

但正如 Chris 所建議的,如果您闡明您預期的 output 以及您想要存儲拆分的位置,我可以更具體。 您是否真的想在 AZ 上拆分似乎值得懷疑——更有可能的是,您想要在 AZ 和任何其他角色之間的邊界上拆分。 是這樣嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM