我不確定我是否理解錯誤,或者下面的代碼是否錯誤,但根據我的理解,以下代碼應該給出相同的輸出:
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?
uj5u.com熱心網友回復:
這是因為 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')]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/447938.html
上一篇:R:按基因名稱在2列中分組
