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