Como converter a coluna DataFrame em String em Pandas

  1. Pandas DataFrame Series astype(str) Método
  2. DataFrame apply Método para operar em Elementos na Coluna

Introduziremos métodos para converter a coluna Pandas DataFrame em string.

  • Método Pandas DataFrame Series astype(str)
  • DataFrame método apply para operar em elementos em coluna

Utilizaremos o mesmo DataFrame abaixo neste artigo.

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

Pandas DataFrame Series astype(str) Método

astype(str) Método converte a Série Pandas para o tipo especificado de type.

pandas.Series.astype(str)

Ele converte a Série, coluna DataFrame como neste artigo, para 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

O astype() método não modifica os dados DataFrame no local, portanto precisamos atribuir a coluna Series de Pandas retornada à coluna específica DataFrame.

Também poderíamos converter várias colunas em string simultaneamente colocando os nomes das colunas entre colchetes para formar uma 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

DataFrame apply Método para operar em Elementos na Coluna

apply(func, *args, **kwds)

O método apply de DataFrame aplica a função func a cada coluna ou linha.

Poderíamos utilizar a função lambda no lugar de func para simplificar.

>>> 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

Você não poderia utilizar o método apply para aplicar a função a várias colunas.

>>> 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

Artigo relacionado - Pandas DataFrame

  • Subtraia duas colunas de um DataFrame Pandas
  • Como Obter o Agregado de Pandas Group-By e Sum
  • Artigo relacionado - Pandas DataFrame Column

  • Como Criar uma Coluna Vazia em Pandas DataFrame
  • Obtenha a primeira linha dos Pandas DataFrame de coluna fornecida