Python 从Dask数据帧列创建列表的方法
我想从Dask数据帧列创建一个列表/集合。基本上,我希望使用此列表通过将值与此数据帧中的列匹配来筛选另一个数据帧中的行。我曾经尝试过使用Python 从Dask数据帧列创建列表的方法,python,dask,dask-dataframe,Python,Dask,Dask Dataframe,我想从Dask数据帧列创建一个列表/集合。基本上,我希望使用此列表通过将值与此数据帧中的列匹配来筛选另一个数据帧中的行。我曾经尝试过使用list(df[column])和set(df[column]),但这会花费很多时间,最终导致创建集群时出错,或者有时在达到内存限制时重新启动内核 我可以使用dask.bag或多处理创建列表吗?当您尝试将列转换为列表或使用常规list/set设置时,Python会将其加载到内存中,这就是为什么会出现内存限制问题 我相信通过使用dask.bag您可能会解决这个问题
list(df[column])
和set(df[column])
,但这会花费很多时间,最终导致创建集群时出错,或者有时在达到内存限制时重新启动内核
我可以使用
dask.bag
或多处理创建列表吗?当您尝试将列转换为列表或使用常规list/set设置时,Python会将其加载到内存中,这就是为什么会出现内存限制问题
我相信通过使用dask.bag
您可能会解决这个问题,因为dask.bag
将延迟加载您的数据,尽管我不确定是否不必首先读取df[列]
。此外,请注意,根据数据的大小,将该列转换为一个包需要一段时间
使用dask.bag
可以运行map、filter和aggregate,因此它似乎是解决问题的好方法
您可以试着运行它,看看它是否按照您的期望过滤列表/包
将dask.bag作为数据库导入
bag=db.来自_序列(df[列],npartitions=5)
袋式过滤器(lamdba列表\元素:列表\元素==“过滤行”)
由于这只是一个示例,因此需要更改npartitions
和lambda表达式以满足您的需要
让我知道这是否有帮助Hey@FabioRosado,我试着从df[column]
创建一个包,但创建一个包的过程看起来几乎需要2分钟。我的数据帧大约有1000万行。可能这就是为什么它看起来很长时间。老实说,我很害怕,我最初的直觉告诉我,通过将数据帧传递给一个包,dask必须首先读取每个元素,即使以一种懒惰的方式读取,也需要n个时间。我会尝试看看我是否能想出一个更好的方法来做这件事,如果我能想出一些东西,我会编辑我的回复