从 Dask 数据框列创建列表的方法
Ways of Creating List from Dask dataframe column
我想从 Dask Dataframe 列创建一个 list/set。基本上,我想使用此列表通过将值与此数据框中的列匹配来过滤另一个数据框中的行。我曾尝试使用 list(df[column])
和 set(df[column])
,但它会花费大量时间并最终给出有关创建集群的错误,或者有时会在达到内存限制时重新启动内核。
我可以使用 dask.bag
或多处理来创建列表吗?
当您尝试将列转换为列表或使用常规设置时 list/set
Python 会将其加载到内存中,这就是您遇到内存限制问题的原因。
我相信通过使用 dask.bag
你可能会解决这个问题,因为 dask.bag
会延迟加载你的数据,虽然我不确定 df[column]
是否不需要首先阅读。另外,请注意,将该列变成一个包需要一段时间,具体取决于数据的大小。
使用 dask.bag
允许您 运行 映射、过滤和聚合,因此它似乎可以很好地解决您的问题。
您可以尝试 运行 看看它是否像您预期的那样过滤 list/bag。
import dask.bag as db
bag = db.from_sequence(df[column], npartitions=5)
bag.filter(lamdba list_element: list_element == "filtered row")
由于这只是一个示例,您需要更改 npartitions
和 lambda 表达式以满足您的需要。
如果有帮助请告诉我
我想从 Dask Dataframe 列创建一个 list/set。基本上,我想使用此列表通过将值与此数据框中的列匹配来过滤另一个数据框中的行。我曾尝试使用 list(df[column])
和 set(df[column])
,但它会花费大量时间并最终给出有关创建集群的错误,或者有时会在达到内存限制时重新启动内核。
我可以使用 dask.bag
或多处理来创建列表吗?
当您尝试将列转换为列表或使用常规设置时 list/set
Python 会将其加载到内存中,这就是您遇到内存限制问题的原因。
我相信通过使用 dask.bag
你可能会解决这个问题,因为 dask.bag
会延迟加载你的数据,虽然我不确定 df[column]
是否不需要首先阅读。另外,请注意,将该列变成一个包需要一段时间,具体取决于数据的大小。
使用 dask.bag
允许您 运行 映射、过滤和聚合,因此它似乎可以很好地解决您的问题。
您可以尝试 运行 看看它是否像您预期的那样过滤 list/bag。
import dask.bag as db
bag = db.from_sequence(df[column], npartitions=5)
bag.filter(lamdba list_element: list_element == "filtered row")
由于这只是一个示例,您需要更改 npartitions
和 lambda 表达式以满足您的需要。
如果有帮助请告诉我