AttributeError: kan alleen .str-accessor gebruiken met tekenreekswaarden, die np.object_ dtype gebruiken in panda’s

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 .strgebruiken 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:

  1. U kunt seriesgebruiken om deze fout op te lossen.

    dc_listings['price'].series.str.replace(',', '')
    

  1. en indien serieswerkt niet dat u ook alternatief kunt gebruiken apply(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)

Other episodes