web-dev-qa-db-fra.com

AttributeError: ne peut utiliser que les accesseurs .str avec des valeurs de chaîne, qui utilisent np.object_ dtype dans pandas

La méthode Str.replace renvoie une erreur d'attribut.

dc_listings['price'].str.replace(',', '')
AttributeError: Can only use .str accessor with string values, which use np.object_ dtype in pandas

Voici les 5 premières lignes de ma colonne de prix.

enter image description here

Ce débordement de pile thread recommande pour vérifier si ma colonne a des valeurs NAN mais que les valeurs de ma colonne ne sont pas NAN. enter image description here

12
MJP

Comme l’erreur indique, vous ne pouvez utiliser que .str avec des colonnes de chaîne et vous avez un float64. Il n'y aura pas de virgule dans un float, donc ce que vous avez ne fera rien, mais en général, vous pouvez le lancer en premier:

dc_listings['price'].astype(str).str.replace...

Par exemple:

In [18]: df
Out[18]:
          a         b         c         d         e
0  0.645821  0.152197  0.006956  0.600317  0.239679
1  0.865723  0.176842  0.226092  0.416990  0.290406
2  0.046243  0.931584  0.020109  0.374653  0.631048
3  0.544111  0.967388  0.526613  0.794931  0.066736
4  0.528742  0.670885  0.998077  0.293623  0.351879

In [19]: df['a'].astype(str).str.replace("5", " hi ")
Out[19]:
0    0.64 hi 8208 hi  hi 4779467
1          0.86 hi 7231174332336
2            0.04624337481411367
3       0. hi 44111244991 hi 194
4          0. hi 287421814241892
Name: a, dtype: object
24
Randy

Si price est un type de type float 64, les données ne sont pas une chaîne. Vous pouvez essayer dc_listings['price'].apply(function)

0
Subhash