J'ai une colonne d'une base de données de pandas que j'ai obtenue d'une requête de base de données avec des cellules vides. Les cellules vierges deviennent "Aucune" et je veux vérifier si chacune des lignes est Aucune:
In [325]: yes_records_sample['name']
Out[325]:
41055 John J Murphy Professional Building
25260 None
41757 Armand Bayou Nature Center
31397 None
33104 Hubert Humphrey Building
16891 Williams Hall
29618 None
3770 Covenant House
39618 None
1342 Bhathal Student Services Building
20506 None
D'après ce que je comprends de la documentation, je peux vérifier si chaque ligne est nulle avec la commande isnull()
http://pandas.pydata.org/pandas-docs/dev/missing_data.html#values-considered-missing
Cette fonction, cependant, ne fonctionne pas pour moi:
In [332]: isnull(yes_records_sample['name'])
Je reçois l'erreur suivante:
NameError Traceback (most recent call last)
<ipython-input-332-55873906e7e6> in <module>()
----> 1 isnull(yes_records_sample['name'])
NameError: name 'isnull' is not defined
J'ai aussi vu que quelqu'un venait de remplacer les chaînes "Aucune", mais aucune de ces variantes de cette approche ne fonctionnait pour moi: Renommer la valeur "Aucune" dans Pandas
yes_records_sample['name'].replace('None', "--no value--")
yes_records_sample['name'].replace(None, "--no value--")
J'ai finalement pu utiliser la fonction fillna
et remplir chacune de ces lignes avec une chaîne vide yes_records_sample.fillna('')
comme solution de contournement, puis vérifier yes_records_sample['name']==''
. Mais je suis profondément dérouté par la manière dont «Aucune» fonctionne et par sa signification. Existe-t-il un moyen de simplement vérifier si une cellule dans une base de données est "Aucune"?
Appelez ça comme ça:
yes_records_sample['name'].isnull()
Je ne pouvais trouver aucun programme intégré qui fasse exactement cela, alors je le fais manuellement. En cas de série, le code est le suivant:
import numpy as np
series = yes_records_sample['name']
n = np.empty_like(series)
n[...] = None
nones = series.values == n
Dans le cas de DataFrames, le code est très similaire:
import numpy as np
df = yes_records_sample
n = np.empty_like(df)
n[...] = None
nones = df == n
Mon problème avec .isnull () est qu'il ne fait pas la distinction entre NaN et None. Cela peut ou peut ne pas être un problème dans votre application.