我在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
输出
nome_adm | >|||
---|---|---|---|
0 | CC Brasil基金会 | publico alvo的资格调查报告。o f | |
1 | ABC Futuro | /tr>||
2 | Tabuao | >brasil manually ii multimercado credito privadorevenciariopublico que tem VGBL e prevencia | >