【问题标题】:AttributeError: 'DataFrame' object has no attribute 'str'AttributeError:“DataFrame”对象没有属性“str”
【发布时间】:2018-09-12 19:11:27
【问题描述】:

我在编写一些代码时遇到了问题。

我遇到了一个错误。 AttributeError:“DataFrame”对象没有属性“str”。运行以下代码时。

BosCle = get_tables('https://www.basketball-reference.com/boxscores/201710170CLE.html')

Get_tables 是一个进入网页并获取该网页上的表格的功能。播放的分钟数以分钟:秒格式给出。 我想改变这个,不知道为什么这不起作用。

BosCle[0]['MP'].dtypes
OUTPUT: MP           object
        MP           object
        dtypes:      object

然后我尝试使用以下代码拆分字符串。

BosCle[0]['MP'].str.split(':')

我尝试了 str.replace 或 str.split,这也是可行的选择,但它给出了相同的错误:

AttributeError                            Traceback (most recent call last)
<ipython-input-15-802e713eb38b> in <module>()
----> 1 BosCle[0]['MP'].str.split(':')
~\Anaconda3\lib\site-packages\pandas\core\generic.py in __getattr__(self, name)
   4370             if self._info_axis._can_hold_identifiers_and_holds_name(name):
   4371                 return self[name]
-> 4372             return object.__getattribute__(self, name)
   4373 
   4374     def __setattr__(self, name, value):

AttributeError: 'DataFrame' object has no attribute 'str'

希望有人可以提供帮助。

这是表格中的数据。

Starters    Team    Opponent    Away/Home   MP    FG    FGA   FG%
Player 1    BOS     CLE         A          39:12  3     5     .6    
Player 2    BOS     CLE         A          32:31  2     2     1.    
Player 3    BOS     CLE         A          31:53  1     5     .2    
Player 4    BOS     CLE         A          29:01  5     5     1    
Player 5    BOS     CLE         A          25:11  6     10     .6    
Player 6    BOS     CLE         A          7:12   1     5     .2    
Player 7    BOS     CLE         A          9:12   0     5     0    
Player 8    BOS     CLE         A          0      0     0     0    
Player 9    BOS     CLE         A          0      0     0     0    

【问题讨论】:

  • 如果数据类型是对象,为什么它们是可行的选择?我错过了什么吗?
  • 能否也添加一些虚拟数据?
  • 您是否希望数据框具有属性str?为什么?
  • 报错说BosCle[0]['MP']上没有属性str,所以不能做BosCle[0]['MP'].str
  • 是的,我也可以尝试添加表格。

标签: python error-handling attributes


【解决方案1】:

从您的示例看来,BosCle[0]['MP'] 不是单个对象,而是一个 DataFrame。如果您更深入一层并到达对象str 将起作用。

【讨论】:

  • ['MP'] 是数据框中的一列,我怎么能比这更深入?
  • 您发布的数据中有些地方没有意义。表中的数据并不完全是这样,因为当我输入两行并尝试运行 dtypes 时,我得到一个关键错误 0:&gt;&gt;&gt; df Starters Team Opponent Away/Home MP FG FGA FG% 0 Player 1 BOS CLE A 39:12 3 5 0.6 1 Player 2 BOS CLE A 32:31 2 2 1.0 &gt;&gt;&gt; df[0]['MP'].dtypes ... KeyError: 0
  • 嗯,我不知道如何将其设置为数据框,所以我不知道这是否是问题所在,如果有帮助,我可以尝试向您发送数据的屏幕截图?
  • 让我们从您可以发送的这些输出开始。尝试运行这两个命令:1) type(BosCle[0]['MP']) 2) BosCle[0]['MP'].head()
  • 好的。 'type(BosCle[0]['MP'])' 给我以下输出: pandas.core.frame.DataFrame 函数。 BosCle[0]['MP'].head() 给出下表。 MP MP 0 39:36 39:36 1 39:21 39:21 2 36:32 36:32 3 32:07 32:07 4 5:15 5:15
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-19
  • 2021-06-26
  • 2013-10-23
  • 1970-01-01
  • 2018-09-10
  • 2021-10-04
相关资源
最近更新 更多