AttributeError: 'float' objet n'a pas d'attribut "split"
Je suis à l'appel de cette ligne:
lang_modifiers = [keyw.strip() for keyw in row["language_modifiers"].split("|") if not isinstance(row["language_modifiers"], float)]
Cela semble fonctionner où row["language_modifiers"]
est un mot (atlas method
, central
), mais pas quand il s'agit comme nan
.
Je pensais que mon if not isinstance(row["language_modifiers"], float)
pouvait rattraper le moment où les choses sont nan
mais pas le cas.
De fond: row["language_modifiers"]
est une cellule dans un fichier tsv, et qui se présente comme nan
lorsque la cellule est vide dans le tsv être analysée.
Pourquoi downvoted? Juste pour que je le sais. Vous pouvez tester sur les 3 cas de test-je inclure dans la question.
OriginalL'auteur Dhruv Ghulati | 2017-02-14
Vous devez vous connecter pour publier un commentaire.
Vous avez raison, de telles erreurs causées par NaN représentant des cellules vides.
Il est commun pour filtrer ces données, avant d'appliquer les nouvelles opérations, à l'aide de cet idiome sur votre dataframe df:
Alternativement, il peut être plus pratique à utiliser
fillna()
méthode à imputer (à remplacer)null
valeurs avec quelque chose de valeur par défaut.E. g. tous les
null
ouNaN
'peut être remplacé par la valeur moyenne de sa colonneou peut être remplacé par une valeur comme une chaîne vide ("" ou une autre valeur par défaut
OriginalL'auteur Ozgur Ozturk
Vous pouvez également utiliser
df = df.dropna(thresh=n)
oùn
est la tolérance. Sens, elle nécessite n Non NA les valeurs à ne pas faire tomber la ligneVous l'esprit, cette approche permettra de supprimer la ligne
Par exemple: Si vous avez un dataframe avec 5 colonnes,
df.dropna(thresh=5)
serait tomber une ligne qui n'a pas 5 valide, ou non, Na valeurs.Dans votre cas, vous pourriez seulement vouloir garder valide lignes; si oui, vous pouvez régler le seuil pour le nombre de colonnes que vous avez.
les pandas de la documentation sur dropna
OriginalL'auteur hpl002