Maison > développement back-end > Tutoriel Python > 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
Libérer: 2024-10-27 05:03:30
original
344 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal