【问题标题】:Pandas error - Truth Value of a Series is Ambiguous when using iloc [duplicate]Pandas 错误 - 使用 iloc 时系列的真值不明确 [重复]
【发布时间】:2017-12-28 18:28:51
【问题描述】:

我正在使用 pandas 数据框,我正在尝试选择 yearID == 2001team_IDx == 'OAK' 所在的行。 yearID 列是 int 类型,team_IDx 是一个对象。这是我正在使用的表达式:

mergeddf.loc[(mergeddf['yearID'] == 2001 & mergeddf['teamID_x'] == 'OAK')]

但我不断收到错误:

TypeError: cannot compare a dtyped [object] array with a scalar of type [bool]

我是初学者,甚至不知道如何表达我的问题。我已经查看了有关堆栈溢出的其他答案,但它们对我来说没有意义。这个错误是什么意思?我应该了解哪些基本概念才能自己理解?我该如何解决这个问题?

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    这是由于位运算符的运算符优先级高于逻辑运算符。您需要在每个条件周围加上另一层括号:

    mergeddf.loc[((mergeddf['yearID'] == 2001) & (mergeddf['teamID_x'] == 'OAK'))]
    

    【讨论】:

    • 谢谢!这解决了我的问题。你有资源可以用来了解更多关于 Pandas 位运算符的运算符优先级的信息吗?
    • @NadaaTaiyab 恐怕我没有什么比官方文档和 SO 问题更适合你的了 :) 几周前,我开始学习 Pandas,方法是在 Pandas 标签中隐藏其他用途。
    • @NadaaTaiyab 另外,请记住,如果有帮助,您可以接受答案。单击我的答案旁边的灰色复选标记。它有助于。谢谢!
    猜你喜欢
    • 2018-01-11
    • 2021-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多