HOWTO · Pandas
Comment convertir une colonne de DataFrame en chaîne de caractères dans Pandas
Cet article présente comment convertir la colonne Pandas DataFrame en chaîne de caractères. Il inclut la méthode astype(str) et les méthodes d'application.
Sur cette page
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
appliquerpour 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 Series 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