【发布时间】:2018-01-17 01:48:08
【问题描述】:
对于我的班级,我需要在 iris 数据集中找到介于 4.5 和 6 之间的萼片长度。 确切的规格是“选择萼片长度大于 4.5 但小于 6 的行” 给定的代码(答案应该是这种形式)是
subset=data[data['petal width (cm)']>2]
我拥有的是:
subset=data[data[(['sepal length (cm)']>4.5 and ['sepal length (cm)']<6)]]
我遇到的主要问题是语法正确。在当前状态下,我收到一条错误消息
TypeError: '>' not supported between instances of 'list' and 'float'
如果改为
subset=data[data[(data['petal width (cm)']>4.5 and data['petal width (cm)']<6)]]
我得到了错误
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
谢谢
【问题讨论】:
-
subset=data[(data[(['sepal length (cm)']>4.5) & (['sepal length (cm)']<6)])]。您需要将每个条件括在括号中,并使用&创建“和”逻辑。我建议您阅读boolean indexing 上的文档。 -
我理解括号的原因,我会研究为什么需要 & 但是当我尝试你的解决方案时,我得到
TypeError: '>' not supported between instances of 'list' and 'float' -
我的错,里面有一个错字——你需要这个
subset = data[(data['sepal length (cm)'] > 4.5) & (data['sepal length (cm)'] < 6)] -
那行得通。谢谢你。我意识到我没有将每一个都放在括号中,而是尝试将它们加在一起。