Comment convertir une colonne de DataFrame en chaîne de caractères dans Pandas
-
Série de DataFrame de Pandas
astype(str)
méthode -
Méthode DataFrame
apply
pour opérer sur les éléments d’une colonne
Nous introduirons des méthodes pour convertir la colonne Pandas DataFrame en string
.
- Méthode de la série Pandas DataFrame
astype(str)
. - Méthode DataFrame
appliquer
pour opérer sur les éléments de la colonne
Nous utiliserons le même DataFrame ci-dessous dans cet article.
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
Série de DataFrame de Pandas astype(str)
méthode
Pandas Series astype(dtype)
method convertit la série Pandas au type dtype
spécifié.
pandas.Series.astype(str)
Il convertit la colonne Series, DataFrame comme dans cet article, 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
La méthode astype()
ne modifie pas les données de la DataFrame
en place, donc nous devons assigner la Série
de Pandas retournée à la colonne DataFrame
spécifique.
Nous pourrions également convertir plusieurs colonnes en chaîne de caractères simultanément en mettant les noms des colonnes entre crochets pour former une liste.
>>> 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éthode DataFrame apply
pour opérer sur les éléments d’une colonne
apply(func, *args, **kwds)
La méthode apply
de DataFrame
applique la fonction func
à chaque colonne ou ligne.
Nous pourrions utiliser la fonction lambda
à la place de func
pour plus de simplicité.
>>> 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
Vous ne pourriez pas utiliser la méthode apply
pour appliquer la fonction à plusieurs colonnes.
>>> 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