La Conversion de Type en python AttributeError: 'str' object n'a pas d'attribut "astype'
Je suis déconcerté par la conversion de type en python pandas
df = pd.DataFrame({'a':['1.23', '0.123']})
type(df['a'])
df['a'].astype(float)
Ici df
est une pandas de la série et son contenu sont 2 chaînes, alors que je peux appliquer astype(float)
sur ce pandas de la série, et il correctement convertir la chaîne en float. Cependant
df['a'][1].astype(float)
me donne AttributeError: 'str' object n'a pas d'attribut "astype'. Ma question est: comment peut-il être? J'ai pu convertir l'ensemble de la série de la chaîne de flotter, mais je ne pouvais pas convertir l'entrée de cette série de la chaîne pour flotter?
Aussi, je charge ma série de données brutes
df['id'].astype(int)
il génère ValueError: invalid littéral pour int() avec la base 10:"
Celui-ci semble suggérer qu'il existe un vide dans mon df['id']
. J'ai donc vérifier si c'est vrai en tapant
'' in df['id']
il dit faux. Donc, je suis très confus.
- Vous devez utiliser comme ceci df['a'].lci[1].astype(float), il ne va rien faire d'erreur
Vous devez vous connecter pour publier un commentaire.
df['a']
renvoie uneSeries
objet qui aastype
comme un vectorisé moyen de convertir tous les éléments de la série dans un autre.df['a'][1]
retourne le contenu d'une cellule du dataframe, dans ce cas, la chaîne de'0.123'
. C'est maintenant le retour d'unstr
objet qui n'ont pas cette fonction. Pour le convertir en utilisation régulière instruction python:Selon votre deuxième question, l'opérateur
in
qui est à la fin d'appeler__contains__
contre la série avec''
comme argument, ici, c'est la docstring de l'opérateur:Cela signifie que le
in
opérateur est à la recherche de votre chaîne vide dans l'index, pas le contenu de celui-ci.La façon de rechercher vos chaînes vides est d'utiliser l'opérateur égal:
df
, si je veux vérifier si le nombre 42 est dans le df, je ne devrais pas utiliser42 in df
ou42 in df['a']
ou42 in df[['a']]
droit? lein
est la vérification de l'indice de pandas de la série? mais qu'en estdf[['a']]
? c'est une pandas dataframe. Doncin
lors de l'utilisation sur un dataframe est toujours en train de vérifier les index?df['a'][1]
sera le retour de la valeur réelle à l'intérieur de la matrice, à la position1
, qui est en fait une chaîne de caractères. Vous pouvez le convertir en utilisantfloat(df['a'][1])
.Pour la deuxième question, peut-être que vous avez une valeur vide sur votre données brutes. Le test correct serait:
Source pour la deuxième question: https://stackoverflow.com/a/21320011/5335508