Maison > développement back-end > Tutoriel Python > Comment remplacer les chaînes vides (espaces) par NaN dans un DataFrame Pandas ?

Comment remplacer les chaînes vides (espaces) par NaN dans un DataFrame Pandas ?

Linda Hamilton
Libérer: 2024-10-31 04:18:30
original
716 Les gens l'ont consulté

How to Replace Empty Strings (Whitespace) with NaN in a Pandas DataFrame?

Remplacer les valeurs vides (espaces blancs) par NaN dans Pandas

Comment pouvez-vous remplacer efficacement les valeurs vides (espaces blancs) par NaN dans un Pandas dataframe ?

Approche initiale :

Le code suivant est capable de remplacer les valeurs vides par None, mais il est inefficace et n'est pas la solution la plus pythonique :

<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

Solution optimale :

Pandas propose une solution plus concise et efficace grâce à la méthode df.replace() :

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

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

Ce code remplace le blanc valeurs (expressions régulières : ^s*$) avec NaN, produisant 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

Remarque :

Si vous devez gérer des données valides qui peuvent contiennent des espaces blancs, vous pouvez modifier l'expression régulière en r'^s $', qui correspond uniquement aux champs constitués entièrement d'espaces blancs.

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