Str.replace方法返回属性错误。
dc_listings['price'].str.replace(',', '')
AttributeError: Can only use .str accessor with string values, which use np.object_ dtype in pandas
这是我的价格列的前5行。
此堆栈溢出thread recommends,以检查我的列是否具有NAN值,但我列中的所有值都不是NAN。
答案 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)
两种方式:
您可以使用 series
来修复此错误。
dc_listings['price'].series.str.replace(',', '')
如果 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".