list(df['column'])与df['column'].to_list()有什么区别?

7

当我想从DataFrame列(pandas 1.0.1)中获取列表时,我可以执行以下操作:

 df['column'].to_list()

或者我可以使用:

list(df['column'])

这两个方法都很有效,但它们之间有什么区别呢? 有一个方法比另一个更好吗?

list() 是 Python 内置函数,而 df.to_list() 则是 DataFrame 的便利函数。在 IDE 中运行一些 %%timeit 基准测试,看看哪个运行速度更快。 - S3DEV
大多数情况下,这对于numpy数组非常有用。尝试:a = np.array(1) -> list(a)将会给你一个错误,而a.tolist()将返回一个标量。 - Erfan
1个回答

9

list 接收一个可迭代对象并返回一个纯 Python 列表。这是将 任何 可迭代对象转换为纯 Python 列表的内置 Python 方式。

to_list 是核心 pandas 对象类中的一个方法,它将其对象转换为纯 Python lists。区别在于实现是由 pandas 核心开发人员完成的,他们可以根据自己的理解优化该过程,并/或者在转换中添加额外的功能,而纯粹的 list(....) 不会做到这一点。

例如,这段代码的来源是:

def tolist(self):
    '''(...)
    '''
    if self.dtype.kind in ["m", "M"]:
        return [com.maybe_box_datetimelike(x) for x in self._values]
    elif is_extension_array_dtype(self._values):
        return list(self._values)
    else:
        return self._values.tolist()

这基本意味着 to_list 可能会使用普通的列表推导 - 类似于 list(...) 但强制最终对象是panda的 datetime 类型而不是Python的datetime类型 -; 直接将其转换为纯 list(...); 或使用 numpytolist() 实现。
后者与Python的list(...)之间的区别可以在此线程中找到

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接