Función Pandas Series.str.contains()

Pandas 常用函数Funciones comunes de Pandas


Series.str.contains()Es una función de Pandas utilizada para verificar si una cadena contiene una subcadena especificada.

En el procesamiento de datos, a menudo necesitamos filtrar y depurar según el contenido del texto, como buscar registros que contengan palabras clave específicas, filtrar textos que coincidan con un patrón determinado, etc.contains()La función puede comprobar si cada elemento de cadena contiene la subcadena especificada o el patrón de expresión regular.

Definición del término:containsSignifica 'contener', es decir, comprobar si la cadena contiene el contenido especificado.


Sintaxis básica y parámetros

str.contains()Es el método de acceso a cadenas de Series, por lo que primero necesitas tener una Series que contenga cadenas y luego llamarlo a través del.straccessor.

Formato de sintaxis

Series.str.contains(pat, case=True, regex=True, na=None)

Descripción de parámetros

Parámetro Tipo ¿Obligatorio? Descripción Valor predeterminado
pat str Obligatorio El patrón a buscar, puede ser una cadena normal o una expresión regular. -
case bool Opcional Si distingue entre mayúsculas y minúsculas. El valor predeterminado es True (distingue mayúsculas y minúsculas). True
regex bool Opcional Si se trata el parámetro pat como una expresión regular. El valor predeterminado es True. True
na object Opcional El valor que se devuelve cuando el elemento es NaN. El valor predeterminado es None (devuelve NaN). None

Descripción de la función

  • Valor de retorno: Devuelve una Series de valores booleanos que indica si cada elemento contiene el patrón especificado.
  • Efecto: Comprueba cada elemento de cadena en la Series y devuelve True o False.
  • Nota: Por defecto se utiliza la coincidencia con expresiones regulares, lo que permite coincidir con patrones más complejos.

Ejemplos

A través de una serie de ejemplos de simples a complejos, dominaremos por completostr.contains()su uso.

Ejemplo 1: Uso básico - Comprobar si contiene una subcadena

Ejemplo

import pandas as pd

# Crear una Series que contenga texto
s = pd.Series(['apple', 'banana', 'grape', 'pineapple', 'orange'])

# Comprobar si contiene 'ap'
result = s.str.contains('ap')

print("Serie original:")
print(s)
print("n¿Contiene 'ap':")
print(result)

Resultado de salida:

原始 Series:
0       apple
1      banana
2       grape
3    pineapple
4      orange
dtype: object

是否包含 'ap':
0       True
1      False
2       True
3       True
4      False

Análisis del código:

  1. s.str.contains('ap')Comprueba si cada cadena contiene la subcadena 'ap'.
  2. 'apple' contiene 'ap', devuelve True.
  3. 'banana' no contiene 'ap', devuelve False.
  4. 'grape' contiene 'ap', devuelve True.
  5. 'pineapple' contiene 'ap', devuelve True.

Ejemplo 2: Uso de coincidencia con expresiones regulares

contains()Por defecto se utilizan expresiones regulares, lo que permite coincidir con patrones más complejos.

Ejemplo

import pandas as pd

# Crear una Series que contenga texto
s = pd.Series(['hello123', 'world456', 'ejemplo789', 'python', 'test123'])

# Usar expresión regular para coincidir con cadenas que empiezan con una letra seguida de un número
result = s.str.contains(r'^[a-zA-Z]+d+$')

print("Serie original:")
print(s)
print("nPatrón que coincide con letra inicial + número final:")
print(result)

Resultado de salida:

原始 Series:
0      hello123
1      world456
2     ejemplo789
3       python
4      test123
dtype: object

匹配字母开头+数字结尾的模式:
0       True
1       True
2       True
3      False
4       True

Análisis del código:

  • r'^[a-zA-Z]+d+$'Es una expresión regular que coincide con cadenas que comienzan con una letra y terminan con un número.
  • ^Indica el inicio de la cadena,$Indica el final de la cadena.
  • 'python' no contiene números, por lo que no coincide.

Ejemplo 3: Coincidencia sin distinguir mayúsculas y minúsculas

Al configurarcase=Falsese puede lograr una coincidencia sin distinguir mayúsculas y minúsculas.

Ejemplo

import pandas as pd

# Crear una Series que contenga texto con diferentes mayúsculas y minúsculas
s = pd.Series(['Apple', 'APPLE', 'apple', 'Banana', 'APPLE'])

# Coincidencia distinguiendo mayúsculas y minúsculas
result_case = s.str.contains('APPLE')
# Coincidencia sin distinguir mayúsculas y minúsculas
result_nocase = s.str.contains('APPLE', case=False)

print("Serie original:")
print(s)
print("nCoincidencia distinguiendo mayúsculas y minúsculas 'APPLE':")
print(result_case)
print("nCoincidencia sin distinguir mayúsculas y minúsculas 'APPLE':")
print(result_nocase)

Resultado de salida:

原始 Series:
0      Apple
1     APPLE
2     apple
3     Banana
4     APPLE
dtype: object

区分大小写匹配 'APPLE':
0      False
1       True
2      False
3      False
4       True

不区分大小写匹配 'APPLE':
0       True
1       True
2       True
3      False
4       True

Análisis del código:

  • case=True(Predeterminado) Distingue mayúsculas y minúsculas, solo coincide exactamente con 'APPLE'.
  • case=FalseSin distinguir mayúsculas y minúsculas, 'Apple', 'APPLE' y 'apple' pueden coincidir.

Ejemplo 4: Manejo de valores faltantes

Mediante elnaparámetro se puede especificar cómo manejar los valores NaN.

Ejemplo

import pandas as pd
import numpy as np

# Crear una Series que contenga valores NaN
s = pd.Series(['apple', 'banana', np.nan, 'grape', None])

# Manejo predeterminado de NaN (devuelve NaN)
result_default = s.str.contains('ap')
# Especificar que devuelva False cuando hay NaN
result_na_false = s.str.contains('ap', na=False)

print("Serie original:")
print(s)
print("nManejo predeterminado (devuelve NaN):")
print(result_default)
print("nTratar NaN como False:")
print(result_na_false)

Resultado de salida:

原始 Series:
0       apple
1      banana
2        NaN
3       grape
4       None
dtype: object

默认处理(返回 NaN):
0       True
1      False
2        NaN
3       True
4        NaN

将 NaN 视为 False:
0       True
1      False
2      False
3       True
4      False

Análisis del código:

  • De forma predeterminada, NaN y None devuelven NaN.
  • Configurandona=Falsepuedes hacer que NaN se considere como no coincidente.
  • En el procesamiento de datos real, esto es muy útil y puede evitar problemas de filtrado causados por NaN.

Ejemplo 5: Filtrado de datos

contains()Se utiliza frecuentemente junto con la indexación booleana para filtrar datos.

Ejemplo

import pandas as pd

# Crear una Series simulada de datos de producto
products = pd.Series([
    'iPhone 14 Pro',
    'Samsung Galaxy S23',
    'iPhone 13',
    'Google Pixel 7',
    'iPad Pro',
    'MacBook Air',
    'Dell XPS 15'
])

# Filtrar productos que contengan 'iPhone'
iphone_products = products[products.str.contains('iPhone')]

# Filtrar productos que no contengan 'i' (distinguiendo mayúsculas y minúsculas)
no_i_products = products[~products.str.contains('i')]

print("Todos los productos:")
print(products)
print("nProductos que contienen 'iPhone':")
print(iphone_products)
print("nProductos que no contienen la 'I' mayúscula:")
print(no_i_products)

Resultado de salida:

所有产品:
0       iPhone 14 Pro
1    Samsung Galaxy S23
2          iPhone 13
3    Google Pixel 7
4          iPad Pro
5      MacBook Air
6        Dell XPS 15
dtype: object

包含 'iPhone' 的产品:
0    iPhone 14 Pro
2          iPhone 13
dtype: object

不包含大写 'I' 的产品:
6    Dell XPS 15

Análisis del código:

  • products[products.str.contains('iPhone')]Filtra los productos que contienen 'iPhone'.
  • ~products.str.contains('i')Usando~la negación, se filtran los productos que no contienen 'i'.
  • Esta es una operación común en el filtrado de datos.

Precauciones

  • str.contains()Por defecto se utilizan expresiones regulares (regex=True)。
  • Si necesitas coincidir con cadenas normales (no como expresiones regulares), puedes configurarregex=False。
  • De forma predeterminada se distinguen mayúsculas y minúsculas. Usandocase=Falsese puede no distinguir entre mayúsculas y minúsculas.
  • De forma predeterminada, los valores NaN devuelven NaN, usandonael parámetro se puede especificar el valor de retorno.
  • Esta función devuelve una Series de valores booleanos, que se puede usar directamente para filtrar datos con indexación booleana.

Pandas 常用函数Funciones comunes de Pandas

Otras extensiones