Comment convertir une colonne de DataFrame en chaîne de caractères dans Pandas

  1. Série de DataFrame de Pandas astype(str) méthode
  2. 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 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

Article connexe - Pandas DataFrame

  • Comment ajouter une ligne à Pandas DataFrame
  • Filtrer les lignes des cadres de données en fonction des valeurs des colonnes dans Pandas
  • Article connexe - Pandas DataFrame Column

  • Comment convertir le dictionnaire Python en Pandas DataFrame
  • Fusionner les Pandas DataFrames sur l'index