簡體   English   中英

為什么大熊貓會引發“ KeyError:True”而“ df.Apples == 30&True”也不是鑰匙?

[英]why pandas raise “KeyError: True” while “df.Apples==30 & True” is not a key too?

基於熊貓的官方文檔並在以下方面提供幫助:

pandas.DataFrame.loc

loc允許按標簽或布爾數組訪問一組行和列。 https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.loc.html

但它看起來布爾數組實際上不起作用!

import pandas as pd

data=[[30, 21],[0, 121],[4, 121]]
df= pd.DataFrame(data, columns=['Apples', 'Bananas'])

print(df.loc[df.Apples==30 & True])      # It's OK
print(df.loc[True])                      # **doesn't work**

答案在鏈接到的loc文檔中:

允許的輸入為:

  • [...]
  • 與要切片的軸長度相同的布爾數組,例如[True, False, True]

如果掩碼的長度不同,則假定您正在搜索列中的標簽,但找不到它,則會引發KeyError


請注意, df.Apples == 30 & True具有與df相同的長度。

df.Apples == 30 & True

評估為

df.Apples == 0

哪一個

0    False
1     True
2    False
Name: Apples, dtype: bool

因為==優先級比&低。 請參閱運算符優先級

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM