Python AttributeError: 只能使用带有字符串值的 .str 访问器,它在 Pandas 中使用 np.object_ dtype

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/52065909/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-19 20:01:12  来源:igfitidea点击:

AttributeError: Can only use .str accessor with string values, which use np.object_ dtype in pandas

pythonpandas

提问by MJP

Str.replace method returns an attribute error.

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

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

Here are the top 5 rows of my price column.

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

enter image description here

在此处输入图片说明

This stack overflow thread recommendsto check if my column has NAN values but non of the values in my column are NAN. enter image description here

这个堆栈溢出线程建议检查我的列是否有 NAN 值,但我列中的值都不是 NAN。 在此处输入图片说明

回答by Randy

As the error states, you can only use .strwith string columns, and you have a float64. There won't be any commas in a float, so what you have won't really do anything, but in general, you could cast it first:

正如错误所述,您只能.str与字符串列一起使用,并且您有一个float64. 浮点数中不会有任何逗号,因此您实际上不会做任何事情,但一般来说,您可以先将其转换为:

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

For example:

例如:

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

回答by Subhash

If price is a dtype float 64 then the data is not a string. You can try dc_listings['price'].apply(function)

如果 price 是 dtype float 64,则数据不是字符串。你可以试试dc_listings['price'].apply(function)