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

  1. Método Pandas DataFrame Series astype(str)
  2. Método apply de DataFrame para operar en los elementos de la columna

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

Artículo relacionado - Pandas DataFrame

  • Convertir JSON en un DataFrame de Pandas
  • Cómo obtener las cabeceras de columna de Pandas DataFrame como una lista
  • Artículo relacionado - Pandas DataFrame Column

  • Normalizar una columna en Pandas Dataframe
  • Cómo convertir un float en un entero en Pandas DataFrame