【问题标题】:AttributeError: 'str' object has no attribute 'name'-pythonAttributeError:'str'对象没有属性'name'-python
【发布时间】:2021-10-22 23:08:25
【问题描述】:
for dataset in titanic:
    dataset['Title'] = dataset.Name.str.extract('([A-Za-z]+)\.', expand=False)
pd.crosstab(titanic['Title'], titanic['Sex'])
for dataset in titanic:
    dataset['Title'] = dataset['Title'].replace([
        'Lady', 'Countess', 'Capt', 'Col','Don', 'Major',
        'Rev', 'Sir', 'Jonkheer', 'Dona', 'Dr'], 'Rare')
    dataset['Title'] = dataset['Title'].replace(['Mlle', 'Ms'], 'Miss')
    dataset['Title'] = dataset['Title'].replace('Mme', 'Mrs')
titanic[['Title', 'Survived']].groupby(['Title'], as_index=False).mean()

我收到此错误,但看不到错误。我想根据名称中的标题创建一个新功能并将其划分为类别。

AttributeError                            Traceback (most recent call last)
<ipython-input-22-0537f25296b4> in <module>()
      1 for dataset in titanic:
----> 2     dataset['Title'] = dataset.name.str.extract('([A-Za-z]+)\.', expand=False)
      3 pd.crosstab(titanic['Title'], titanic['Sex'])
      4 for dataset in titanic:
      5     dataset['Title'] = dataset['Title'].replace([

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

【问题讨论】:

  • 你能告诉我们titanic数据框吗?
  • 我猜“泰坦尼克号”是dataframe 本身,所以在它上面做for 只会给你一次它的一个列名。删除循环。
  • 您的代码显示“名称”(大写),但错误显示“名称”(小写)。我认为您以某种方式更改了不正确的小写名称,应该回到原来的名称。
  • dataset 是什么类型?它是熊猫数据框吗?这是重要的信息。数据框列可以通过索引dataset["Title"] 或属性dataset.Title 寻址,只要列名符合python 的属性命名规则。坚持使用一种或另一种命名约定可能不会让人感到困惑。

标签: python string dataset data-science attributeerror


【解决方案1】:

您好,问题是您正在遍历数据框,并且不可能同时找到dataset['Title']dataset.Name(迭代)。此迭代只能获取列名。而不是 dataset.Name 使用 Titanic 数据框通过使用 titanic['Name'] 获取列

【讨论】:

    猜你喜欢
    • 2017-04-15
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    • 2015-09-30
    • 2020-09-22
    • 2020-06-25
    • 2016-12-27
    • 2015-03-08
    相关资源
    最近更新 更多