AttributeError:只能将.str访问器与字符串值一起使用,该字符串值在pandas中使用np.object_ dtype

时间:2018-08-28 20:40:48

标签: python pandas

Str.replace方法返回属性错误。

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

这是我的价格列的前5行。

enter image description here

此堆栈溢出thread recommends,以检查我的列是否具有NAN值,但我列中的所有值都不是NAN。 enter image description here

3 个答案:

答案 0 :(得分:7)

由于错误状态,您只能将.str与字符串列一起使用,并且您有float64。浮动字符中不会有任何逗号,因此您实际上不会做任何事情,但是一般而言,您可以先进行投射:

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

例如:

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

答案 1 :(得分:2)

两种方式:

  1. 您可以使用 series 来修复此错误。

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

  1. 如果 series 不起作用,您也可以替代地使用 apply(str),如下所示:

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

答案 2 :(得分:0)

如果price是dtype float 64,则数据不是字符串。 您可以尝试Error: <path> attribute d: Expected number, "MNaN,6V0.5HNaNV6".