【问题标题】:Select dataframes rows based on an OR condition根据 OR 条件选择数据框行
【发布时间】:2021-06-16 13:58:16
【问题描述】:

我有一个 df 数据框,其中有一列名为“Move”,我只想保留 Move 为“Right”或“Left”的行。

但这不起作用:

df = df[df.Move == 'Right' or df.Move == 'Left']

也不这样做:

moves = ['Right','Left']
df = df[df.Move in moves]

你知道如何做这样的事情吗?

【问题讨论】:

  • 你能提供这个DF的样本吗?

标签: python dataframe


【解决方案1】:

我认为您缺少括号,请尝试使用此

df = df.loc[(df.Move == "Right") & (df.Move == "Left")]

【讨论】:

    【解决方案2】:

    欢迎来到 Pandas 的试错世界:-)

    df = df[(df.Move == 'Right') | (df.Move == 'Left')]
    

    解释 TLDR;

    • 掩码是布尔值Series,因此受按位运算符 OR |、AND & 和 NOT/XOR ^ 的约束

    来自 StackOverflow 的回答:https://stackoverflow.com/a/64939034/206413

    已编辑:从句的括号

    【讨论】:

    • 好吧,我也试过了,但也没用。它给了我:TypeError: Cannot perform 'ror_' with a dtyped [object] array and scalar of type [bool]
    • 我发现了我的错误。我需要括号,所以它适用于 df = df[(df.Move == 'Right') | (df.Move == '左')]。感谢您的帮助。
    • @MVMV,是的,我也是 :-) 我刚刚编辑了我的答案,添加了括号,在 jupyter 笔记本中摆弄之后:-) 我希望你支持我的答案。我快1000分了!请,请,请...
    • 我试图给它投票,但该网站告诉我,我需要至少 15 个声望才能投票或其他什么。也许我不能这样做,因为我刚到 stakcoverflow?一旦我获得 15 名声望,我肯定会回到这篇文章来支持你的答案,别担心 :)
    • @MVMV,感谢您的尝试!谢谢,谢谢,谢谢!几年前我处于同样的位置,现在我试图达到 1000 分。希望将来能帮助您达到 1000 分 :-) 享受旅程。
    猜你喜欢
    • 2018-03-02
    • 2017-10-15
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 2020-01-24
    • 2023-01-07
    • 1970-01-01
    相关资源
    最近更新 更多