Comment remplacer les valeurs d'espacement par NaN dans une trame de données Pandas ?

Susan Sarandon
Libérer: 2024-10-30 10:13:27
original
184 Les gens l'ont consulté

How do you replace whitespace values with NaN in a Pandas dataframe?

Remplacer les valeurs vides par NaN dans Pandas

Problème

Trouver des valeurs d'espaces dans une trame de données Pandas et les remplacer par NaN peut être un défi. L'objectif est de convertir une trame de données avec des valeurs de chaîne vides en une trame avec des valeurs NaN, améliorant potentiellement la gestion et l'analyse des données.

Solution

La méthode df.replace() fournit une solution élégante, permettant vous devez remplacer les valeurs basées sur des expressions régulières :

<code class="python">df.replace(r'^\s*$', np.nan, regex=True)</code>
Copier après la connexion

Dans ce modèle d'expression régulière, ^ correspond au début de la chaîne, s* correspond à zéro ou plusieurs caractères d'espacement et $ correspond à la fin de la chaîne. Par conséquent, cette expression régulière vérifie les chaînes composées entièrement d'espaces ou d'une chaîne vide.

Implémentation

Application de cette solution à l'exemple de trame de données :

<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'))

result = df.replace(r'^\s*$', np.nan, regex=True)

print(result)</code>
Copier après la connexion

Cela produira le résultat souhaité :

                   A    B   C
2000-01-01 -0.532681  foo   0
2000-01-02  1.490752  bar   1
2000-01-03 -1.387326  foo   2
2000-01-04  0.814772  baz NaN
2000-01-05 -0.222552  NaN   4
2000-01-06 -1.176781  qux NaN
Copier après la connexion

Amélioration

Comme l'a souligné Temak, si des données valides peuvent contenir des espaces, le modèle d'expression régulière peut être modifié en r'^s $' pour correspondre uniquement aux chaînes composées entièrement d'espaces :

<code class="python">df.replace(r'^\s+$', np.nan, regex=True)</code>
Copier après la connexion

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!