Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

100
Visualizações
Cree una nueva columna usando str.contains y según la condición if-else

Tengo una lista de nombres 'patrón' que deseo hacer coincidir con cadenas en la columna 'url_text'. Si hay una coincidencia, es decir, True , el nombre debe imprimirse en una nueva columna 'pol_names_block' y si es False , deje la fila vacía.

 pattern = '|'.join(pol_names_list) print(pattern) 'Jon Kyl|Doug Jones|Tim Kaine|Lindsey Graham|Cory Booker|Kamala Harris|Orrin Hatch|Bernie Sanders|Thom Tillis|Jerry Moran|Shelly Moore Capito|Maggie Hassan|Tom Carper|Martin Heinrich|Steve Daines|Pat Toomey|Todd Young|Bill Nelson|John Barrasso|Chris Murphy|Mike Rounds|Mike Crapo|John Thune|John. McCain|Susan Collins|Patty Murray|Dianne Feinstein|Claire McCaskill|Lamar Alexander|Jack Reed|Chuck Grassley|Catherine Masto|Pat Roberts|Ben Cardin|Dean Heller|Ron Wyden|Dick Durbin|Jeanne Shaheen|Tammy Duckworth|Sheldon Whitehouse|Tom Cotton|Sherrod Brown|Bob Corker|Tom Udall|Mitch McConnell|James Lankford|Ted Cruz|Mike Enzi|Gary Peters|Jeff Flake|Johnny Isakson|Jim Inhofe|Lindsey Graham|Marco Rubio|Angus King|Kirsten Gillibrand|Bob Casey|Chris Van Hollen|Thad Cochran|Richard Burr|Rob Portman|Jon Tester|Bob Menendez|John Boozman|Mazie Hirono|Joe Manchin|Deb Fischer|Michael Bennet|Debbie Stabenow|Ben Sasse|Brian Schatz|Jim Risch|Mike Lee|Elizabeth Warren|Richard Blumenthal|David Perdue|Al Franken|Bill Cassidy|Cory Gardner|Lisa Murkowski|Maria Cantwell|Tammy Baldwin|Joe Donnelly|Roger Wicker|Amy Klobuchar|Joel Heitkamp|Joni Ernst|Chris Coons|Mark Warner|John Cornyn|Ron Johnson|Patrick Leahy|Chuck Schumer|John Kennedy|Jeff Merkley|Roy Blunt|Richard Shelby|John Hoeven|Rand Paul|Dan Sullivan|Tim Scott|Ed Markey'

Estoy usando el siguiente código df['url_text'].str.contains(pattern) que da como resultado True en caso de que un nombre en 'pattern' esté presente en una fila en la columna 'url_text' y False en caso contrario. Con eso he probado el siguiente código:

 df['pol_name_block'] = df.apply( lambda row: pol_names_list if df['url_text'].str.contains(pattern) in row['url_text'] else ' ', axis=1 )

me sale el error:

 TypeError: 'in <string>' requires string as left operand, not Series
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

De este marco de datos de juguete:

 >>> import pandas as pd >>> from io import StringIO >>> df = pd.read_csv(StringIO(""" ... id,url_text ... 1,Tim Kaine ... 2,Tim Kain ... 3,Tim ... 4,Lindsey Graham.com ... """), sep=',') >>> df id url_text 0 1 Tim Kaine 1 2 Tim Kain 2 3 Tim 3 4 Lindsey Graham.com

A partir de pol_names_list , construimos patterns al formatearlos así:

 patterns = '(%s)' % '|'.join(pol_names_list)

Luego, podemos usar el método de extract para asignar el valor a la columna pol_name_block para obtener el resultado esperado:

 df['pol_name_block'] = df['url_text'].str.extract(patterns)

Producción :

 id url_text pol_name_block 0 1 Tim Kaine Tim Kaine 1 2 Tim Kain NaN 2 3 Tim NaN 3 4 Lindsey Graham.com Lindsey Graham
over 4 years ago · Santiago Trujillo Relatório

0

Cambie su patrón para encerrarlo alrededor de un grupo de captura () y use extract :

 pattern = fr"({'|'.join(pol_names_list)})" df['pol_name_block'] = df['url_text'].str.extract(pattern) print(df) # Output <- with the sample of @tlentali id url_text pol_name_block 0 1 Tim Kaine Tim Kaine 1 2 Tim Kain NaN 2 3 Tim NaN 3 4 Lindsey Graham Lindsey Graham

Importante : puede extraer solo un elemento incluso si hay varias coincidencias. Si desea extraer todos los elementos, debe usar findall o extractall (solo cambiará el formato de salida)

 # New sample, same pattern >>> df id url_text 0 1 Tim Kaine and Lindsey Graham 1 2 Tim Kain 2 3 Tim 3 4 Lindsey Graham # findall >>> df['url_text'].str.findall(pattern) 0 [Tim Kaine, Lindsey Graham] 1 [] 2 [] 3 [Lindsey Graham] Name: url_text, dtype: object # extractall >>> df['url_text'].str.extractall(pattern) 0 match 0 0 Tim Kaine 1 Lindsey Graham 3 0 Lindsey Graham
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda