1
我有一個數據幀:熊貓數據幀的行爲:列表(DF)與LEN(DF)
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
如果我把list
這個對象上,我得到這個:
>>> list(df)
['A', 'B']
但是,如果我調用len
這個對象上,我得到這個:
>>> len(df)
3
後者len
通話更直觀到m e - 就像查找可迭代元素的數量。我不清楚在pandas.DataFrame
上這兩個函數調用後面行爲的確切區別。從dis.dis
輸出看起來非常相似:
>>> dis.dis('len(df)')
1 0 LOAD_NAME 0 (len)
2 LOAD_NAME 1 (df)
4 CALL_FUNCTION 1
6 RETURN_VALUE
>>> dis.dis('list(df)')
1 0 LOAD_NAME 0 (list)
2 LOAD_NAME 1 (df)
4 CALL_FUNCTION 1
6 RETURN_VALUE
,所以我沒有任何跡象顯示原因調用一個數據幀list
而len
返回對象的行數返回列名的列表。當我撥打時,this method被撥打DataFrame
?
注意:list
和len
功能比較只是一個例子。我真的在尋找有關如何在與各種功能接口時如何相互作用/行爲的信息。
怎麼大熊貓 「知道」 來稱呼'__len__',不過,當我打電話'LEN(DF)'?如果我在任意對象的__foo__方法上調用函數foo,那麼這種行爲不起作用。 – blacksite
** pandas **不知道,但一個python **類**知道。換句話說,'__len__'是任何類可以實現以定義魔術方法'LEN()',很像'__ge__'是魔術方法一個類可以實現以定義> =運算符。知道這個,'df'不過是'DataFrame'類的對象。 –