【问题标题】:Filtering DataFrame on multiple conditions in Pandas在 Pandas 中根据多个条件过滤 DataFrame
【发布时间】: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)']&gt;4.5) &amp; (['sepal length (cm)']&lt;6)])]。您需要将每个条件括在括号中,并使用&amp; 创建“和”逻辑。我建议您阅读boolean indexing 上的文档。
  • 我理解括号的原因,我会研究为什么需要 & 但是当我尝试你的解决方案时,我得到 TypeError: '&gt;' not supported between instances of 'list' and 'float'
  • 我的错,里面有一个错字——你需要这个subset = data[(data['sepal length (cm)'] &gt; 4.5) &amp; (data['sepal length (cm)'] &lt; 6)]
  • 那行得通。谢谢你。我意识到我没有将每一个都放在括号中,而是尝试将它们加在一起。

标签: python pandas


【解决方案1】:
subset = data[(data['sepal length (cm)'] > 4.5) & (data['sepal length (cm)'] < 6)]

感谢@cmaher

【讨论】:

    猜你喜欢
    • 2014-08-12
    • 2018-03-03
    • 1970-01-01
    • 2020-08-29
    • 1970-01-01
    • 2023-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多