【问题标题】:Python: 'float' object is not subscriptable [duplicate]Python:'float'对象不可下标[重复]
【发布时间】:2019-11-25 22:08:35
【问题描述】:

我正在尝试在包含泰坦尼克号乘客信息的 pandas 数据集中映射一些非数值。现在我正在尝试绘制乘客登船的港口地图。有 3 个端口,我试图通过为每个端口添加一列来映射它们。如果他们从那个港口登船,则为 0,否则为 1。

我试着做一些与性类似的事情。我添加了另一列,如果性别是男性,则添加 0,如果性别是女性,则添加 1。这行得通,但是当我尝试对端口执行此操作时,我收到“'float' object is not subscriptable”错误。

import pandas as pd
#opening the data
train_path = #path to data set
passengers = pd.read_csv(train_path)

#creating a copy
passengers_copy = passengers

#mapping sex
passengers_copy['SexBin'] = [0 if x[0] == 'm' else 1 for x in passengers_copy['Sex']]

#trying to map the first port
passengers_copy['EmbarkedS'] = [0 if x[0] == 'S' else 1 for x in passengers_copy['Embarked']]

【问题讨论】:

  • 我正在尝试运行此程序,但未定义 passengers_copy。请提供所有内容,以便我们测试您的代码。

标签: python


【解决方案1】:

在此:For x in passengers_copy['Embarked'] x 已经是一个浮点数。

对于浮点数,它是不可下标的(这意味着与列表不同,它不能用方括号下标来访问特定的索引。)因为它只是一个数字而不是字符串/列表。

当您尝试x[0] 时,这就是导致错误的原因。

【讨论】:

  • 奇怪,我没有收到该行的错误。我只在passengers_copy['Embarked'] 中为x 启用它。
  • @MariaContreras 我的错误,我打算写 Embarked。这是因为在您的 Embarked 列中,它是数字 0 或 1 对吗?至于你的 Sex 列,我猜它是一个字符串 'm' 或 'f'。
  • @MariaContreras 如果我的回答对您有所帮助,请接受它作为官方回答,谢谢!
猜你喜欢
  • 2020-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-30
  • 1970-01-01
  • 1970-01-01
  • 2015-12-18
  • 1970-01-01
相关资源
最近更新 更多