两种不同的数据查询方式之间的差异



我不确定我是否理解错误,或者下面的代码是否错误,但根据我的理解,下面的代码应该给出相同的输出:

transactions[transactions['date'].str[14:16] == '21' | transactions['date'].str[14:16] == '22']

transactions.query("date.str.slice(11, 13) == '21' | date.str.slice(11, 13) == '22'")

当我尝试第一个代码时出现错误:

transactions[transactions['date'].str[14:16] == '21' | transactions['date'].str[14:16] == '22']

错误:

TypeError: Cannot perform 'ror_' with a dtyped [object] array and scalar of type [bool]

但当使用.query方法时,我没有得到错误:

transactions.query("date.str.slice(11, 13) == '21' | date.str.slice(11, 13) == '22'")

如何在不使用query方法的情况下更改第一个代码,并使用query方法获得与第二个代码相同的输出?

这是因为Python的运算符优先级。|==更重要,因此'21' | transactions['date'].str[14:16]transactions['date'].str[14:16] == '21'之前被评估

要修复第一行代码,只需在==条件周围添加括号:

transactions[(transactions['date'].str[14:16] == '21') | (transactions['date'].str[14:16] == '22')]

或者,如果您愿意,可以使用.eq而不是==:

transactions[transactions['date'].str[14:16].eq('21') | transactions['date'].str[14:16].eq('22')]

相关内容

  • 没有找到相关文章

最新更新