【发布时间】:2017-10-05 00:47:26
【问题描述】:
我有一个数据框:
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 调用对我来说更直观——就像在一个可迭代对象中查找元素的数量。我不清楚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
所以我没有任何迹象表明为什么在 DataFrame 上调用 list 返回列名列表,而 len 返回对象中的行数。当我打电话给len(df) 时,this method 是否被DataFrame 调用?
注意:list 和 len 函数比较只是一个示例。我真的在寻找有关pandas.DataFrames 在与各种功能接口时如何交互/行为的信息。
【问题讨论】: