Como converter a coluna DataFrame em String em Pandas
-
Pandas DataFrame Series
astype(str)
Método -
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