Maison  >  Article  >  développement back-end  >  Comment remplacer efficacement les valeurs d'espacement par NaN dans les Pandas DataFrames ?

Comment remplacer efficacement les valeurs d'espacement par NaN dans les Pandas DataFrames ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-27 05:03:30225parcourir

How to Efficiently Replace Whitespace Values with NaN in Pandas DataFrames?

Remplacement des valeurs vides (espace blanc) par NaN dans Pandas

Problème :

Considérons une trame de données Pandas avec des valeurs d'espaces présents dans certaines colonnes. Le but est de remplacer ces espaces blancs par des valeurs NaN.

Solution moche :

<code class="python">for i in df.columns:
    df[i][df[i].apply(lambda i: True if re.search('^\s*$', str(i)) else False)]=None</code>

Cette solution parcourt chaque colonne, génère un masque booléen en utilisant regex, et remplace les valeurs d'espace blanc par Aucun. Cependant, c'est inefficace et non idiomatique.

Solution améliorée :

<code class="python">df = pd.DataFrame([
    [-0.532681, 'foo', 0],
    [1.490752, 'bar', 1],
    [-1.387326, 'foo', 2],
    [0.814772, 'baz', ' '],
    [-0.222552, '   ', 4],
    [-1.176781, 'qux', '  '],
], columns='A B C'.split(), index=pd.date_range('2000-01-01','2000-01-06'))

# replaces field that's entirely space (or empty) with NaN
print(df.replace(r'^\s*$', np.nan, regex=True))</code>

Cette solution tire parti de la fonction replace() intégrée de Pandas, qui peut être utilisé pour remplacer les valeurs spécifiées en fonction d'un modèle d'expression régulière. En utilisant r'^s*$', l'expression régulière correspond et remplace tout champ entièrement constitué d'espaces (ou vide) par NaN.

Optimisations :

  • Vérifiez si le type de données de la colonne est objet, car les valeurs d'espacement se trouvent généralement dans les colonnes d'objet.
  • Utilisez r'^s $' au lieu de r'^s*$' si des données valides contiennent des espaces. .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn