Cómo convertir la columna del DataFrame en cadena en los pandas

Jinku Hu 30 enero 2023
  1. Método Pandas DataFrame Series astype(str)
  2. Método apply de DataFrame para operar en los elementos de la columna
Cómo convertir la columna del DataFrame en cadena en los pandas

Introduciremos métodos para convertir la columna Pandas DataFrame en string.

  • Método astype(str) Series de Pandas DataFrame
  • El método de apply de DataFrame para operar en los elementos de la columna

Usaremos el mismo DataFrame que se muestra a continuación en este artículo.

import pandas as pd

df = pd.DataFrame({"A": [1, 2, 3], "B": [4.1, 5.2, 6.3], "C": ["7", "8", "9"]})

print(df)
print(df.dtypes)
   A    B  C
0  1  4.1  7
1  2  5.2  8
2  3  6.3  9

A      int64
B    float64
C     object
dtype: object

Método Pandas DataFrame Series astype(str)

El método Seriess de Pandas astype(dtype) convierte la Series de Pandas al tipo dtype especificado.

pandas.Series.astype(str)

Convierte la columna Seriess, DataFrame como en este artículo, en string.

>>> df
   A    B  C
0  1  4.1  7
1  2  5.2  8
2  3  6.3  9
>>> df['A'] = df['A'].astype(str)
>>> df
   A    B  C
0  1  4.1  7
1  2  5.2  8
2  3  6.3  9
>>> df.dtypes
A     object
B    float64
C     object
dtype: object

El método astype() no modifica los datos de DataFrame en el lugar, por lo tanto necesitamos asignar la Series de Pandas devuelta a la columna DataFrame específica.

También podríamos convertir múltiples columnas a cadena simultáneamente poniendo los nombres de las columnas entre corchetes para formar una lista.

>>> df[['A','B']] = df[['A','B']].astype(str)
>>> df
   A    B  C
0  1  4.1  7
1  2  5.2  8
2  3  6.3  9
>>> df.dtypes
A    object
B    object
C    object
dtype: object

Método apply de DataFrame para operar en los elementos de la columna

apply(func, *args, **kwds)

El método apply de DataFrame aplica la función func a cada columna o fila.

Podríamos usar la función lambda en lugar de func por simplicidad.

>>> df['A'] = df['A'].apply(lambda _: str(_))
>>> df
   A    B  C
0  1  4.1  7
1  2  5.2  8
2  3  6.3  9
>>> df.dtypes
A     object
B    float64
C     object
dtype: object

No podrías usar el método apply para aplicar la función a múltiples columnas.

>>> df[['A','B']] = df[['A','B']].apply(lambda _: str(_))
Traceback (most recent call last):
  File "<pyshell#31>", line 1, in <module>
    df[['A','B']] = df[['A','B']].apply(lambda _: str(_))
  File "D:\WinPython\WPy-3661\python-3.6.6.amd64\lib\site-packages\pandas\core\frame.py", line 3116, in __setitem__
    self._setitem_array(key, value)
  File "D:\WinPython\WPy-3661\python-3.6.6.amd64\lib\site-packages\pandas\core\frame.py", line 3144, in _setitem_array
    self.loc._setitem_with_indexer((slice(None), indexer), value)
  File "D:\WinPython\WPy-3661\python-3.6.6.amd64\lib\site-packages\pandas\core\indexing.py", line 606, in _setitem_with_indexer
    raise ValueError('Must have equal len keys and value '
ValueError: Must have equal len keys and value when setting with an iterable
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artículo relacionado - Pandas DataFrame

Artículo relacionado - Pandas DataFrame Column