web-dev-qa-db-fra.com

Sélection de cellules de pandas avec la valeur Aucune

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"? 

16
Michael Discenza

Appelez ça comme ça:

yes_records_sample['name'].isnull()
30
Korem

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.

1
g.a