gpt4 book ai didi

python - Pandas 数据帧行为: list(df) versus len(df)

转载 作者:行者123 更新时间:2023-12-01 02:33:02 25 4
gpt4 key购买 nike

我有一个数据框:

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 methodDataFrame 上被调用?

注意:listlen 函数比较只是一个示例。我真的在寻找有关 pandas.DataFrame 在与各种函数交互时如何交互/行为的信息。

最佳答案

这是 pandas DataFrame 对象中 __len__ 的定义:

def __len__(self):
return len(self.index)

正如预期的那样,您得到了行数(我猜是设计决策?)

至于list(df),它与__iter__返回的内容有关,在这种情况下,您可以追溯到NDFrame > 这是数据帧的基类,它说:

def __iter__(self):
"""Iterate over infor axis"""
return iter(self._info_axis)

其中 _info_axis 是 DataFrame 的列轴。

关于python - Pandas 数据帧行为: list(df) versus len(df),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46576246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com