str.extract是否覆盖Python中的整个数据帧列



我在Jupyter Notebook上使用Python。

我在使用Series.str.extract时遇到问题。当给定列出现在另一列中时,提取该列的文本可以顺利进行。在之前没有出现(匹配(的第二次提取中,脚本保存了新的匹配,但删除了以前的匹配,我需要保存两次出现,如何解决?

以下脚本和示例:

import pandas as pd
import re
dicionario = {'nome_adm': ['CC Brasil', 
'ABC Futuro',
'Tabuao'], 

'nome': ['brasil fundo de investimento em cotas ', 
'previ futuro multimercado',
'brasil handmade ii multimercado credito privado'], 

'publico': [' publico em geral ', 
'investidores profissionais',
'previdenciario'], 

'texto': ['qual o seu publico alvo. o fundo recebera recursos de investidores qualificados que 777', 
'publico alvo o fundo recebera recursos de publico alvo capitulo i profissionais que o capitulo i',
'publico que tem VGBL e previdencia']}

data = pd.DataFrame(dicionario)
data['texto_curto'] = None
data
# = OK
data['texto_curto'] = data['texto'].str.extract(r'(publico alvo.{0,5})',flags=re.IGNORECASE)
data
# = NOK - overwriting
data['texto_curto'] = data.loc[data['nome_adm'] == 'Tabuao']['texto'].str.extract(r'(vgbl.*)',flags=re.IGNORECASE | re.M)
data

所希望的是信息总是被添加到";短文本";列,并且它未被删除。在这种情况下;texto curto";应填写栏。

  • 使用掩码loc[]仅更新要更新的行
  • 另外使用expand=False参数,使expand()返回序列而不是数据帧
mask = data['nome_adm'] == 'Tabuao'
data.loc[mask, 'texto_curto'] = data.loc[mask]['texto'].str.extract(r'(vgbl.*)',flags=re.IGNORECASE | re.M, expand=False)
data

输出

>/tr>>brasil manually ii multimercado credito privadorevenciario>
nome_adm
0CC Brasil基金会publico alvo的资格调查报告。o f
1ABC Futuro
2Tabuaopublico que tem VGBL e prevencia

最新更新