【问题标题】:How do you use loc in pandas with more than one condition? [duplicate]如何在具有多个条件的熊猫中使用 loc? [复制]
【发布时间】:2020-07-29 17:09:04
【问题描述】:

我正在查看文档中的this example

df.loc[lambda df: df['shield']==8]

如何用 OR 条件扩展它?我正在尝试这样做,但它不起作用:

df.loc[lambda df: df['shield']==8 or df['max_speed'] ==1]

另外,作为旁注,在这种情况下 lambda 函数的意义是什么,因为:

 df.loc[df['shield']==8]

工作得很好。

【问题讨论】:

  • 绝对不要使用函数来索引,它们在这里毫无意义。此外,您应该使用bitwise operators 链接条件。更多详情请查看this answer

标签: python pandas lambda pandas-loc


【解决方案1】:

因为使用数组,这里的 Series 必须使用 butwise OR by | 并且因为运算符的优先级是必要的,所以需要添加括号:

df.loc[lambda df: (df['shield']==8) | (df['max_speed'] ==1)]

【讨论】:

  • 谢谢。此外,我以前从未使用过按位运算符。与熊猫一起工作时是否有怪癖?为什么不只是一个“或”和“和”?
  • @Noobcoder - 你是对的,就像or 表示数组是|& 表示AND~ 表示NOT。这个操作符也在 numpy 中工作(还有 pandas,因为 pandas 建立在 numpy 之上)。
猜你喜欢
  • 2017-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-15
  • 2017-12-14
  • 1970-01-01
  • 2020-01-11
  • 2018-06-28
相关资源
最近更新 更多