Función Pandas Series.str.split()

Pandas 常用函数Funciones comunes de Pandas


Series.str.split()Es la función de Pandas para dividir cadenas.

En el proceso de procesamiento de datos, a menudo necesitamos dividir una cadena en varias partes, como dividir una oración en palabras, dividir valores separados por comas en listas, etc.split()La función puede dividir la cadena en varias partes según el separador especificado.

Definición de la palabra:splitSignifica "separar, dividir", e indica dividir la cadena en varias partes.


Sintaxis básica y parámetros

str.split()Es el método de acceso a cadenas de Series, por lo que primero necesitas tener una Series que contenga cadenas, y luego mediante el.straccesor para llamarlo.

Formato de sintaxis

Series.str.split(pat=None, n=-1, expand=False)

Descripción de parámetros

Parámetro Tipo Obligatorio Descripción Valor predeterminado
pat str Opcional Separador, puede ser una cadena o una expresión regular. El valor predeterminado es un carácter de espacio en blanco. None (carácter de espacio en blanco)
n int Opcional Número de divisiones. -1 significa sin límite, divide en tantas partes como sea posible. -1
expand bool Opcional Si expandir el resultado a DataFrame. Por defecto es False (devuelve Series de listas). False

Descripción de la función

  • Valor de retornoPor defecto devuelve una Series que contiene listas, donde cada elemento de la lista es una subcadena resultante de la división. Cuandoexpand=Truese devuelve un DataFrame.
  • Efectodivide cada cadena en varias partes según el separador especificado.
  • NotaPor defecto usa el espacio en blanco como separador, se puede personalizar el separador.

Ejemplos

Vamos a, a través de una serie de ejemplos de simples a complejos, dominar completamentestr.split()su uso.

Ejemplo 1: Uso básico - Dividir por caracteres de espacio en blanco

Ejemplo

import pandas as pd

# Crear una Series que contenga oraciones
s = pd.Series(['hello world', 'ejemplo python', 'pandas data analysis'])

# Dividir por caracteres de espacio en blanco (comportamiento predeterminado)
result = s.str.split()

print("Series original:")
print(s)
print("nResultado de la división:")
print(result)

Resultado de salida:

原始 Series:
0         hello world
1      ejemplo python
2    pandas data analysis
dtype: object

拆分后的结果:
0         [hello, world]
1    [ejemplo, python]
2    [pandas, data, analysis]

Análisis del código:

  1. s.str.split()Por defecto, divide la cadena por caracteres de espacio en blanco (espacios, tabulaciones, etc.).
  2. Se devuelve una Series que contiene listas, cada lista contiene las subcadenas resultantes.
  3. 'pandas data analysis' se divide en tres partes.

Ejemplo 2: Dividir por un separador específico

Se puede mediante elpatparámetro especificar un separador personalizado.

Ejemplo

import pandas as pd

# Crear una Series que contenga valores separados por comas
s = pd.Series(['apple,banana,orange', 'dog,cat,bird', 'red,green,blue'])

# Dividir por comas
result = s.str.split(',')

print("Series original:")
print(s)
print("nResultado después de dividir por comas:")
print(result)

Resultado de salida:

原始 Series:
0    apple,banana,orange
1       dog,cat,bird
2       red,green,blue
dtype: object

拆分后的结果:
0    [apple, banana, orange]
1       [dog, cat, bird]
2       [red, green, blue]

Análisis del código:

  • s.str.split(',')Divide cada cadena por comas.
  • Este es un método común para procesar datos CSV o valores separados por comas.

Ejemplo 3: Limitar el número de divisiones

Mediante elnparámetro se puede limitar el número de divisiones.

Ejemplo

import pandas as pd

s = pd.Series(['a,b,c,d,e', '1,2,3,4,5'])

# Limitar a dividir solo en 2 partes
result_2 = s.str.split(',', n=2)
# Limitar a dividir solo en 1 parte (es decir, dividir solo una vez)
result_1 = s.str.split(',', n=1)

print("Series original:")
print(s)
print("nLimitar a dividir en 2 partes:")
print(result_2)
print("nLimitar a dividir en 1 parte:")
print(result_1)

Resultado de salida:

原始 Series:
0       a,b,c,d,e
1       1,2,3,4,5
dtype: object

限制拆分为 2 部分:
0       [a, b, c,d,e]
1       [1, 2, 3,4,5]

限制拆分为 1 部分:
0            [a, b,c,d,e]
1            [1, 2,3,4,5]

Análisis del código:

  • n=2Significa dividir como máximo en 2 partes; la última parte contiene todo el contenido restante.
  • n=1Significa dividir solo en el primer separador, obteniendo 2 partes.

Ejemplo 4: Expandir a DataFrame

Cuandoexpand=TrueEl resultado de la división se expande a DataFrame.

Ejemplo

import pandas as pd

# Crear una Series que contenga valores separados por comas
s = pd.Series(['apple,banana,orange', 'dog,cat,bird', 'red,green,blue'])

# Expandir a DataFrame
result = s.str.split(',', expand=True)

print("Series original:")
print(s)
print("nExpandido a DataFrame:")
print(result)
print("nTipo de DataFrame:", type(result))

Resultado de salida:

原始 Series:
0    apple,banana,orange
1       dog,cat,bird
2       red,green,blue
dtype: object

展开为 DataFrame:
        0       1       2
0   apple   banana  orange
1     dog     cat    bird
2     red   green    blue

DataFrame 类型: <class 'pandas.core.frame.DataFrame'>

Análisis del código:

  • expand=TrueExpande el resultado de la división a DataFrame.
  • Cada columna representa una posición después de la división.
  • Esto es muy útil al procesar datos estructurados.

Ejemplo 5: Dividir usando expresiones regulares

split()También admite el uso de expresiones regulares como separador.

Ejemplo

import pandas as pd

# Crear una Series que contenga diferentes separadores
s = pd.Series(['hello-world', 'ejemplo_python', 'pandas#tutorial'])

# Dividir por expresión regular (coincide con cualquiera de -, _, #)
result = s.str.split(r'[-_#]')

print("Series original:")
print(s)
print("nDividido por expresión regular:")
print(result)

Resultado de salida:

原始 Series:
0     hello-world
1   ejemplo_python
2    pandas#tutorial
dtype: object

按正则表达式拆分:
0       [hello, world]
1       [ejemplo, python]
2    [pandas, tutorial]

Análisis del código:

  • r'[-_#]'Es una expresión regular que coincide con cualquiera de los caracteres '-', '_' o '#'.
  • Puede manejar múltiples separadores diferentes al mismo tiempo.

Ejemplo 6: Procesamiento de datos reales

En aplicaciones reales,split()se usa frecuentemente en combinación con otras funciones.

Ejemplo

import pandas as pd

# Simular datos extraídos de un registro (log)
logs = pd.Series([
    '2024-01-01 10:30:45 ERROR Connection failed',
    '2024-01-01 10:31:12 INFO User logged in',
    '2024-01-01 10:32:00 WARNING Memory usage high'
])

# Dividir el contenido del registro
log_parts = logs.str.split(r's+', expand=True)

print("Registro original:")
print(logs)
print("nDataFrame resultante de la división:")
print(log_parts)

# Renombrar columnas
log_parts.columns = ['timestamp', 'level', 'message']
print("nResultado después de renombrar:")
print(log_parts)

Resultado de salida:

原始日志:
0    2024-01-01 10:30:45 ERROR Connection failed
1    2024-01-01 10:31:12 INFO User logged in
2    2024-01-01 10:32:00 WARNING Memory usage high
dtype: object

拆分后的 DataFrame:
                  0     1     2
0  2024-01-01 10:30:45  ERROR  Connection failed
1  2024-01-01 10:31:12   INFO  User logged in
2  2024-01-01 10:32:00  WARNING  Memory usage high

重命名后的结果:
               timestamp    level                message
0  2024-01-01 10:30:45    ERROR    Connection failed
1  2024-01-01 10:31:12     INFO      User logged in
2  2024-01-01 10:32:00  WARNING  Memory usage high

Análisis del código:

  • r's+'Coincide con uno o más caracteres de espacio en blanco, dividiendo el registro en varias partes.
  • expand=TrueExpande el resultado de la división a DataFrame.
  • Al renombrar las columnas, se puede acceder y procesar cada parte fácilmente.

Notas

  • str.split()Por defecto, usa el espacio en blanco como separador.
  • Cuandoexpand=FalseDevuelve una Series que contiene listas.
  • Cuandoexpand=TrueDevuelve un DataFrame, el número de columnas depende del resultado de división más largo.
  • Si la cadena no contiene el separador, la lista devuelta tiene solo un elemento (la cadena original).
  • Las expresiones regulares pueden usarse como separador, proporcionando una forma más flexible de dividir.
  • Si la Series contiene valores NaN, devuelve NaN.

Pandas 常用函数Funciones comunes de Pandas

Otras extensiones