>当我想要来自数据帧列(pandas 1.0.1
(的列表时,我可以这样做:
df['column'].to_list()
或者我可以使用:
list(df['column'])
这两种选择效果很好,但它们之间有什么区别?
一种方法比另一种更好吗?
list
接收一个可迭代对象并返回一个纯python列表。它是一种内置的python方法,可以将任何可迭代对象转换为纯python列表。
to_list
是来自核心熊猫对象类的方法,该方法将其对象转换为纯pythonlists
。不同之处在于,实现是由pandas核心开发人员完成的,他们可以根据自己的理解优化流程,和/或在转换中添加纯list(....)
无法完成的额外功能。
例如,这件作品的source_code
是:
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(...)
转换; 或使用numpy
的tolist()
实现。
后者与python的list(...)
之间的差异可以在in this thread
中找到。