【问题标题】:What are the differences from list(df['column']) and df['column'].to_list()?list(df['column']) 和 df['column'].to_list() 有什么区别?
【发布时间】:2020-05-26 00:06:53
【问题描述】:

当我想要来自 DataFrame 列 (pandas 1.0.1) 的列表时,我可以这样做:

 df['column'].to_list()

或者我可以使用:

list(df['column'])

这两种选择效果很好,但它们之间有什么区别?
一种方法比另一种更好吗?

【问题讨论】:

  • list() 是 Python 内置函数,而 df.to_list() 是 DataFrame 便利函数。在您的 IDE 中运行一些 %%timeit 基准测试,看看其中一个是否比另一个运行得更快。
  • 这主要用于numpy arrays。试试:a = np.array(1) -> list(a) 会给你一个错误,而a.tolist() 会返回一个标量。

标签: python pandas list


【解决方案1】:

list 接收一个可迭代对象并返回一个纯 Python 列表。它是一种内置的 Python 方法,可以将 any 可迭代转换为纯 Python 列表。

to_list 是 pandas 核心对象类中的一种方法,它将其对象转换为纯 python lists。不同之处在于,实现由 pandas 核心开发人员完成,他们可能会根据自己的理解优化流程,和/或在转换中添加纯 list(....) 不会做的额外功能。

例如,the source_code for this piece is:

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 的日期时间——;直接纯list(...) 转换;或使用numpytolist() 实现。

differences between the latter and python's list(...) can be found in this thread

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-22
    • 1970-01-01
    • 2019-12-27
    • 1970-01-01
    • 2011-03-23
    • 2022-01-01
    • 1970-01-01
    相关资源
    最近更新 更多