Función Pandas Series.str.split()
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. Cuando
expand=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
# 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:
s.str.split()Por defecto, divide la cadena por caracteres de espacio en blanco (espacios, tabulaciones, etc.).- Se devuelve una Series que contiene listas, cada lista contiene las subcadenas resultantes.
- '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
# 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
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
# 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
# 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
# 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.- Cuando
expand=FalseDevuelve una Series que contiene listas. - Cuando
expand=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.
Otras extensiones
Funciones comunes de Pandas