当我想从DataFrame列(pandas 1.0.1
)中获取列表时,我可以执行以下操作:
df['column'].to_list()
或者我可以使用:
list(df['column'])
这两个方法都很有效,但它们之间有什么区别呢? 有一个方法比另一个更好吗?
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(...)
; 或使用 numpy
的 tolist()
实现。list(...)
之间的区别可以在此线程中找到。
list()
是 Python 内置函数,而df.to_list()
则是 DataFrame 的便利函数。在 IDE 中运行一些%%timeit
基准测试,看看哪个运行速度更快。 - S3DEVnumpy数组
非常有用。尝试:a = np.array(1)
->list(a)
将会给你一个错误,而a.tolist()
将返回一个标量。 - Erfan