Met de methode Str.replace wordt een attribuutfout geretourneerd.
dc_listings['price'].str.replace(',', '')
AttributeError: Can only use .str accessor with string values, which use np.object_ dtype in pandas
Dit zijn de top 5 rijen van mijn prijskolom.
Deze stack-overflow raad beveelt aanom te controleren of mijn kolom NAN-waarden heeft, maar geen van de waarden in mijn kolom zijn NAN.
Antwoord 1, autoriteit 100%
Zoals de fout aangeeft, kun je alleen .str
gebruiken met stringkolommen, en je hebt een float64
. Er zullen geen komma’s in een float staan, dus wat je hebt zal niet echt iets doen, maar in het algemeen zou je het eerst kunnen casten:
dc_listings['price'].astype(str).str.replace...
Bijvoorbeeld:
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
Antwoord 2, Autoriteit 2%
Twee manieren:
-
U kunt
series
gebruiken om deze fout op te lossen.dc_listings['price'].series.str.replace(',', '')
-
en indien
series
werkt niet dat u ook alternatief kunt gebruikenapply(str)
zoals hieronder weergegeven:dc_listings['price'].apply(str).str.replace(',', '')
Antwoord 3
Als de prijs een DTYPE-float is 64 dan zijn de gegevens geen tekenreeks.
U kunt het proberen dc_listings['price'].apply(function)