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>
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>
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
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!